ストアド プロシージャを使用して SQL Server に値を入力しています。プロシージャーは、追加された行に ID を追加します。この ID をコードに戻す必要があります。
現在、Visual Studio の OUTPUT ウィンドウに出力 ID が表示されますが、コードでそれをキャプチャできないようです。以下は、proc の要約版です。
SQL :
CREATE PROCEDURE dbo.DoSomething
(
@var1 INT = NULL,
@var2 INT = NULL,
@var3 DATE = NULL
)
AS
BEGIN
INSERT INTO atable
(
vara,
varb,
varc
)
VALUES
(
@var1,
@var2,
@var3
)
RETURN SCOPE_IDENTITY()
END
C#:
int result = 0;
/// create command
SqlCommand cmd = new SqlCommand("DoSomething", this.OpenSqlConnection());
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@var1", thing.value1);
cmd.Parameters.AddWithValue("@var2", thing.value2);
cmd.Parameters.AddWithValue("@var3", thing.value3);
/// send data to db
result = (int)cmd.ExecuteScalar();
そのため、エラーが発生しています:オブジェクト参照がオブジェクトのインスタンスに設定されていません。(int)cmd.ExecuteScalar() に到達したとき。
何か案は?