日期:2014-05-18  浏览次数:20430 次

|M| 如何知道当前插入数据库的时候出错是什么错误
本来我写用户注册的时候是
先判断用户要注册的用户在数据库里有没有这条记录
如果没有注册

但昨天看了SQL数据库约束的,就想到用约束来做过程是这样的
如表:
User
ID         Name
1           Kim

当用户再次注册Kim的时候就会出现 "违反了UNIQUE   KEY   约束 "
这样就不会有重复的用户注册
但有一个总是因为我是用
try
{
      user.Insert(info)   //添加用户记录
}
catch
{
      response.write( "用户名已经存在 ");
}
上面这样可以,但是当插入记录有别的错误的时候也是报这个错误
所以我想问
try
{
      user.Insert(info)   //添加用户记录
}
catch(Exception   ex)
{
    if(???)     在这里能不能判断是 "违反了UNIQUE   KEY   约束 "
    {
            response.write( "用户名已经存在 ");
    }
}

谢谢

------解决方案--------------------
try
{
...
}
catch (SqlException e)
{
// 2601 为主键冲突
if (e.Number == 2601)
{

}
else
{

}
}
------解决方案--------------------
何必加判断,不加那个if就可以了
------解决方案--------------------
用代码控制呀
------解决方案--------------------
学习,和delphi挺象的。都是有一个异常基类,特定异常继承自基类。
------解决方案--------------------
zyciis330() ( ) 信誉:100 2007-07-17 12:26:17 得分: 0
我的是ASP.NET的 没有SqlException
只有catch (Exception ex)
-------------------
把System.Data.SqlClient命名空间加上。

------解决方案--------------------
先判断用户要注册的用户在数据库里有没有这条记录
如果没有注册,就按这个思路查找数据库好了
if(查找返回行数== "1 ")
{
//提示存在
}
else
{
//插入数据库
}
感觉没有必要用异常
------解决方案--------------------
try
{
user.Insert(info) //添加用户记录
}
catch(Exception ex)
{
response.write(ex.Message);
}

------解决方案--------------------
捕获的异常不一定就是这个用户重复的吧,假如数据库在服务器端,而恰恰是服务器端的数据库发生了错误,那么数据插入也会报异常的,我个人认为还是将数据拿在外面查询一遍的好.
if(录入的用户名.equals(数据库中查询的字段有值时))

//通报异常

else
{
try
{
//插入数据
}
catch(Exception ee)
{
//捕获异常
}

}