Asp.net

使用 asp.net 呼叫儲存過程

  • October 9, 2013

如果我在 web.config 文件中定義了連接字元串,如何從**C#**程式碼創建到 SQL 數據庫的連接(抱歉忘記指定),然後呼叫儲存過程。然後,我想最終以某種方式將此數據用作 GridView 的數據源。

以下是在 web.config 中定義連接字元串的方式:

<connectionStrings>
<add name="db.Name" connectionString="Data Source=db;Initial Catalog=dbCat;User ID=userId;Password=userPass;" providerName="System.Data.SqlClient" />
</connectionStrings>

db 伺服器是 Microsoft SQL 伺服器。

這是我一直在尋找的:

ConnectionStringSettings conSet = ConfigurationManager.ConnectionStrings["db.Name"];
SqlConnection con = new SqlConnection(conSet.ConnectionString);

獲取數據的程式碼相當簡單。我對從 web.config 文件中的 connectionString 變數訪問它更感興趣。

如果是這樣的資源文件:

private static readonly string connString = Resource1.connString;

其中 connString 是鍵的名稱。如果是web.config文件

像這樣:

private static readonly string connString = System.Configuration.ConfigurationManager.AppSettings["strConn"];其中 conn 在您的 Web 配置文件中定義。

<add key="strConn" value="User ID=test;Password=test;Initial Catalog=TestDB;Data Source=NameOfServer;"/>

然後呼叫儲存過程:

 //connString = the string of our database app found in the resource file
               using (SqlConnection con = new SqlConnection(connString))
               {
                   using (SqlCommand cmd = new SqlCommand("EMPDLL_selClientByClientID", con))
                   {
                       cmd.CommandType = CommandType.StoredProcedure;
                       cmd.Parameters.Add("@ClientID", SqlDbType.VarChar).Value = cID;
                       con.Open();

                       using (SqlDataReader reader = cmd.ExecuteReader())
                       {
                           if (reader.HasRows)
                           {
                               if (reader.Read())
                               {
                                      //more code
                               }
                            }
                       }
                    }
                 }

那就是如果你在 C# 中編碼,VB.net 它的相同交易只是更冗長:),這裡有一個小範例:

Public Sub DeleteEmployee(ByVal lVID As Long)
       Dim conMyData As SqlConnection
       Dim cmdDelete As SqlCommand

       Try
           conMyData = New SqlConnection(connString)
           cmdDelete = New SqlCommand("delEmployee", conMyData)

           With cmdDelete
               .CommandType = CommandType.StoredProcedure
               'add the parameters
               .Parameters.Add("@LoginID", SqlDbType.BigInt).Value = lVID    'the request
               conMyData.Open()    'open a connection
               .ExecuteNonQuery()  'execute it
           End With

       Catch ex As Exception
           Throw ex
       Finally
           cmdDelete = Nothing
           conMyData.Close()
           conMyData = Nothing
       End Try
   End Sub

當然,您應該使用using語句而不是try/catch/finally確保清理正在使用的資源。

引用自:https://stackoverflow.com/questions/7836766