在插入之前先用Select查询下,没存在再做插入操作。

解决方案 »

  1.   

    我的解决办法:直接插入,然后catch异常,如果数据库有相同主键会返回一个错误号,这个错误号是固定的
    你只要用个if来判断是否这个错误号,就知道是否存在相同的值了!这样做效率比较高,我一直是这样做的!!
      

  2.   

    如果要根据返回的异常来判断:
      要判断java.sql.SQLException#getErrorCode()
    的返回值,返回值具体的意思不同的数据库也不相同,
    比如Oracle如果返回值是1,就表示是主键冲突
      

  3.   

    不好意思,只有C#的代码,原来是做C#的,只是语法不同,思想是一样的~
    catch ( SqlException e )
    {
    if (e.Number == 2627) 
    {
        //有相同的数据
    }
    }
      

  4.   

    是呀,这个数字不同数据库是不同的,你不用去找具体值是什么,只要插入相同主键的数据,catch异常,然后看这个异常的ErrorCode就知道了~