ストアド プロシージャを呼び出して結果を取得する必要があります。(すべてのプログラミングと同様に) これを行うにはさまざまな方法があり、Dispose()
and/orを呼び出してリソースをクリーンアップする必要があることはわかっていClose()
ます。this close or dispose question を読んで、using
ステートメントを使用する必要があり、それで十分だと思います。以下は、私が電話をかけている方法です。私の質問は、これを複雑にしすぎていませんか?これにより、すべてのリソースがクリーンアップされますか?
private Int32 CallStoredProcedure(Int32 Id)
{
using (var dt = new DataTable())
{
using (var conn = new SqlConnection(ConnectionString))
{
using (var sqlCmd = new SqlCommand("SEL_StoredProcedure", conn))
{
using (var sda = new SqlDataAdapter(sqlCmd))
{
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@ID", Id);
sqlCmd.Connection.Open();
sda.Fill(dt);
}
}
}
if (dt.Rows.Count == 1)
return Convert.ToInt32(dt.Rows[0]["IDv2"]);
else if (dt.Rows.Count > 1)
throw new Exception("Multiple records were found with supplied ID; ID = " + studentId.ToString());
}
return 0;
}
PS - を呼び出すことができることはわかってExecuteScalar
いますが、非スカラー呼び出しには一般的な形式を使用するため、ここで探しているのはそれではありません。