当前位置:编程学习 > C#/ASP.NET >>

无法捕获sql异常

begin try
begin transaction
select 1/0
commit transaction
end try

begin catch
rollback 
raiserror ('ffff',16,1)

end catch

请问为什么我在c#端 无法捕获 raiserror 抛出的信息? 谢谢 --------------------编程问答-------------------- 参考如下
create procedure sp_InfoMsgTest
@times int
as
begin 
  declare @msg NVARCHAR(100)
   
  while(@times>0)
  begin
    set @msg = 'Error' + cast(@times as VARCHAR(5))
    raiserror(@msg,16,1)
    set @times =@times - 1
  end
end


private const string conString = "Server=SZSOFT-SZZB\\SQLEXPRESS;database=office;uid=sa;pwd=abc_!123456;";
        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = conString;
             
            con.FireInfoMessageEventOnUserErrors = true;
            con.InfoMessage += new SqlInfoMessageEventHandler(con_InfoMessage);
            con.Open();
 
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "sp_InfoMsgTest";
            cmd.Connection = con;
            cmd.Parameters.Add(new SqlParameter("@times", 10));
            cmd.ExecuteNonQuery();
        }
 
        void con_InfoMessage(object sender, SqlInfoMessageEventArgs e)
        {
            Console.WriteLine(e.Message);
        }
--------------------编程问答-------------------- 谢谢你的代码。

问题在于 catch 里面的 raiserror 无法被捕获 。

如果 将raiserror  放在  begin try 与 end try 之间就可以被捕获。 --------------------编程问答--------------------
引用 楼主 u011314627 的回复:
begin try
begin transaction
select 1/0
commit transaction
end try

begin catch
rollback 
raiserror ('ffff',16,1)

end catch

请问为什么我在c#端 无法捕获 raiserror 抛出的信息? 谢谢



begin try
begin transaction
select 1/0
commit transaction
end try

begin catch
raiserror ('ffff',16,1)
rollback 


end catch
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,