在C#和SQL中需要帮助

时间:2012-03-27 15:56:21

标签: c# sql

我在C#中使用SQL server作为后端创建应用程序。我需要捕获sql server错误并在C#GUI上显示它。例如:(在SQL服务器中)我创建一个具有列ID,名称,年龄等的表,其中ID是主键,如果我在ID中插入相同的值两次,则SQL Server会出错。我希望在C#GUI上显示这种错误,这样当用户通过C#表单将重复数据输入SQL服务器时,就会产生错误。我需要这个代码... 谢谢

4 个答案:

答案 0 :(得分:2)

通常.net类引发错误...你真的需要为你的问题提供更多的代码或上下文

try
{
   // ...
   SqlCommand.ExecuteNonQuery( ... );
}
catch( Exception ex )
{
   MessageBox.Show( ex.ToString( ) );
}

答案 1 :(得分:1)

try
{
    //Run query here
}
catch(SqlException e)
{
    MessageBox.Show(e.Message);
}

答案 2 :(得分:1)

您需要捕获可以使用尝试捕获的异常:

try
{
//Your command here
}
catch (Exception e)
{
//Now you can use e.Message OR e.ToString() to get the message.
}

答案 3 :(得分:0)

我想扩展Timmerz的答案,因为如果您显示异常本身,您可以看到整个堆栈跟踪。如果您想让用户看到简短而精确的内容,请执行以下操作:

try
{
   // ...
   SqlCommand.ExecuteNonQuery( ... );
}
catch( SqlException SqlEx )
{
  string errMsg = String.Empty;

  switch(SqlEx.number)
  {
     case 100:
       errMsg = "blah blah blah";
       break;
     case 200:
       errMsg = "blah blah blah";
       break;
     case 300:
       errMsg = "blah blah blah";
       break;

  }

  if(!String.IsNullOrEmpty(errMsg))
  {
     //If you want a pop up display message
     MessageBox.Show( errMsg );


     //If you want to display it on a label of a form
     Form1.Labelx.text = errMsg;
  }


}

对于SqlEx.number值,您可以创建枚举来检查它,也可以参考http://msdn.microsoft.com/en-us/library/cc645603.aspx获取从SQL服务器异常返回的所有可能的数字。

希望这有帮助