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サーバーはMicrosoftSQLサーバーです。
これが私が探していたものです:
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;"/>
次に、sprocを呼び出します。
//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
もちろん、使用されているリソースを確実にクリーンアップするには、try/catch/finally
の代わりにusing
ステートメントを使用する必要があります。
このようなもの...
using (var con = new SqlConnection(_connectionString))
{
using (var cmd = new SqlCommand(_storedProcedureName, con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@pMyParamater", myParamaterValue);
con.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// do something with the row
}
}
}
}
正直なところ、これはすべて非常に単純なものです。必要なものはすべて ADO.NETドキュメント から見つけることができるはずです。