在主gridview更新中捕获唯一约束错误

时间:2012-05-26 14:15:48

标签: c# asp.net sql

我正在使用gridview和SqlDataSource

在数据库中,我在其中一列上设置了一个唯一约束。

当我使用新值从gridview中的某行更改单元格的值但该值已存在于同一列的其他行时,它会给出错误:

  

无法在对象'dbo.tb1'中插入具有唯一索引'IX_tb1'的重复键行。
  声明已经终止。

我需要向用户显示友好消息,例如在标签

  

错误:值已存在

有没有办法做到这一点?因为我没有使用任何sql命令来捕捉东西。

由于

2 个答案:

答案 0 :(得分:0)

如果你用c#编码然后处理catch块中的错误并显示自定义错误,如下面的话:

try
{
  // Statement which can cause an exception.
}
catch(Type x)
{
  // Statements for handling the exception
  //show your custom error by assigning to label or other control
}
finally
{
  //Any cleanup code
} 

如果你想在sql查询中处理错误,那么使用错误处理方法,如下面:

BEGIN TRY
   SELECT convert(smallint, '2003121')
END TRY
BEGIN CATCH
   PRINT 'errno: ' + ltrim(str(error_number()))
   PRINT 'errmsg: ' + error_message()
END CATCH

答案 1 :(得分:0)

看看这个answer。您需要使用sqldatasource的事件来处理异常以向用户显示友好的内容。