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