我往数据库批量插入数据时,违反了唯一约束,但是普通的报错信息没有包含是哪个记录违反了约束,所以不好修改需要插入的数据。最好有源码,谢各位大侠相救了!!

解决方案 »

  1.   

    用try{
        //你执行插入数据的代码
    }catch(Exception ex){
       MessageBox.Show(ex.Message);
    }可能的话把你要插入的记录先拿到查询分析器执行一遍,看是那行错
      

  2.   

    try
    {
    }
    catch
    {
    }
    捕捉错误呀
      

  3.   

    try
    {
    }
    catch ( Exception error )
    {
      if ( error is SqlException )
      {
        SqlException e = innerException as SqlException;
        switch ( e.Number )
        {
          case 2627:
    // 主键重复
    break;
          case 2601:
             // 唯一索引重复
             break;
          default:
             // 其他错误
             break;
        }
      }
    }
      

  4.   

    把try,catch注释掉,让程序自动报错,然后看错误号在那个地方,然后在哪里设置断点,然后调试,copy出sql语句到查询分析器执行就知道是哪里出错了违反了唯一约束:是你插入的内容重复,主键冲突
      

  5.   

    先谢各位了! 我主要是从excel中读取数据,在插入时违反主键约束(Number=2627),insert into ...select from ...,(就是不想一条一条的读取然后插入),如果按各位的方法只能获取是违反了约束,但是不知道到底是哪条记录违反了!
      

  6.   

    给你条思路,
    你先不给表加任何约束,插入所有记录,
    然后用sql语句,统计那些主键字段重复的记录,
    很好统计吧,只要判断count(...)>1就行了