2

私は次のSQLを持っています

INSERT INTO [dbo].[table1] ([val1], [val2]) 
OUTPUT INSERTED.* 
VALUES (@val1, @val2)

出力された行を読み取るSqlCommand.ExecuteReader()を取得するために使用します。SqlDataReaderパラメータが正しい場合、すべて正常に動作します。

問題は、パラメーターが満たしていない制約がテーブルにある場合に始まります。次に例を示します。

ALTER TABLE [dbo].[table1]
ADD CONSTRAINT [chk_table1_distinct_values] 
CHECK (val1 <> val2)

val1 と val2 に同じ値を指定してコマンドを実行すると、リーダーは黙って失敗します。私にできることはSqlDataReader.HasRows、 を返すプロパティをチェックすることだけですfalse

だから私の質問は、返されたからより具体的なエラーを取得するにはどうすればよいSqlDataReaderですか?

4

2 に答える 2

1

.NETのキャプチャストアドプロシージャの印刷出力のように、「通常の」出力を調べましたか。

AdaTheDevからコピー:

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);
void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    // Do something with e.Message
}
于 2011-01-20T20:03:22.430 に答える
0

セクションbegin try..catch内に と を追加します。catchraiserror

于 2011-01-20T15:50:54.743 に答える