IDENTITY_INSERT 设置为 ON 错误解决办法
的有关信息介绍如下:在插入数据的时候,有时候在SQLServer数据库中一个product表中设置了一个主键,并设置起自动增长;有些时候插入数据会出现下面的错误:
com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 ON 或某个复制用户向 NOT FOR REPLICATION 标识列中插入内容时,必须为表 'product' 中的标识列指定显式值。这个经验就是告诉你怎么解决这个问题
在一切连接正常的时候,连接数据库通过JAVA代码连接成功SQLServer2008R2的时候进行插入操作的时候通常意外的会遇到:
com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 ON 或某个复制用户向 NOT FOR REPLICATION 标识列中插入内容时,必须为表 'product' 中的标识列指定显式值。这个经验就是告诉你怎么解决这个问题
原因在于pID是主键而且设置了自动增长;所以这个列名的数据是不可能插入进去的,你是不是也犯了大概下面的错误?
那么解决办法很简单就是用正确的代码不插入主键的数据,要注明要插入的其余列的数据,避免了出错这样就可以解决了
正确而且有简单地做法是直接略过主键的那一列直接插入;sql语句应该写成:
String sql = "insert into product(pName,price,Store)values(?,?,?)"
运行结果同样可以解决这个错误显示很正常
String sql = "insert into product(pName,price,Store)values(?,?,?)"
conn = DBUtil.getConn();//2创建执行对象pstmt = conn.prepareStatement(sql);//给参数赋值/*正确的代码操作*/pstmt.setString(1,pro.getpName());pstmt.setInt(2,pro.getPrice());pstmt.setInt(3,pro.getStore());
这样一切就OK了