2011-01-20 73 views
1

我有以下SQL获取从TSQL输出第一个错误消息SqlDataReader的

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

我用SqlCommand.ExecuteReader()获得SqlDataReader,读取outputed行。当参数正确时,它一切正常。如果我执行命令,与同一价值VAL1和val2读者静静地失败

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

的问题开始,当表不被满足的参数,例如限制。我所能做的只是检查SqlDataReader.HasRows属性,即返回false

所以我的问题是如何从返回的SqlDataReader得到更具体的错误?

回答

1

你检查像Capture Stored Procedure print output in .NET

从AdaTheDev复制的 “正常” 的输出:

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage); 
void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e) 
{ 
    // Do something with e.Message 
} 
0

add begin try..catch and in catch section,raiserror

+0

可以以此为SqlCommand.CommandText =执行 “的try ... catch ..” 和的ExecuteReader( )?闻起来更像是一个存储过程...... – m0sa 2011-01-20 16:04:26