回 帖 发 新 帖 刷新版面

主题:SqlException的使用问题

catch(SqlException exp)
{
  if(exp.nember==2627)
   
  Message.Text="错误:具有相同索引键值的数据记录已经存在";

else
  Message.Text="无法更新数据记录";
}

请教 SqlException 的用法。[em18]
上面代码exp.number==2627这个值是什么值?

回复列表 (共1个回复)

沙发

SqlException用来获取sql server所抛出(遇到)的错误
number是一个序号,具体含义可以查看sql server的联机丛书
每一个号码代表一个含义,不过我没有找到2627,我用的是sqlsvr2000
只有2601,解释为

错误 2601
严重级别 14
消息正文
不能在具有唯一索引 ''%3!'' 的对象 ''%1!'' 中插入重复键的行。

解释
当试图将重复的索引值放入具有唯一索引的一个或一些列中时发生该错误。Microsoft® SQL Server™ 不允许在具有唯一索引的列中的两个行具有相同的索引值(包括 NULL)。当创建索引和每次使用 INSERT 或 UPDATE 语句修改表时,SQL Server 均检查是否有重复值。

对策
如果索引列中需要有重复的索引值,则除去唯一索引并创建非唯一索引。

若要在包含重复值的数据上使用唯一索引,必须更改某些值以放置重复。可以使用 SELECT 或 UPDATE 语句更改已经在表中的数据,或更改要插入的数据。

这段代码的意思是将这个错误信息封装成更易于用户(而不是程序员)理解的信息

我来回复

您尚未登录,请登录后再回复。点此登录或注册