日期:2014-05-17  浏览次数:20750 次

仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'_category'中的标识列指定显式值。

public void add(Category c){
Connection conn=DB.crateConn();
String sql="set IDENTITY_INSERT  _category ON   insert into _category values(null,?,?)  ";
PreparedStatement ps=DB.prepare(conn, sql);
try {
ps.setString(1, c.getName());
ps.setString(2, c.getDescription());
ps.executeUpdate();
这是代码
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'_category'中的标识列指定显式值。
------最佳解决方案--------------------
这个是因为你显示地插入了含有自增字段的列造成的:
假如非要显示地插入
你可以这样

SET IDENTITY_Insert TableName  ON;
然后执行SQL语句:
insert into TableName values(,,,,,,,,); 
然后关闭
SET IDENTITY_Insert  TableName  OFF;

可以把上面的三条语句作为一个sql语句 送入数据库去用

------其他解决方案--------------------
insert into _category(这里要写上对应的列名) values(null,?,?) 
------其他解决方案--------------------
你有自增列,在插入的时候如果不 SET IDENTITY_INSERT ON ,就不能对自增列显示插入。 你可以对insert into _category values(null,?,?)  插入时指定列

------其他解决方案--------------------
有自增列的表,插入的时候不要写上自增列,除非你取消了自增,比较好的习惯是插入哪列就显式写出来,这样一一对应,也不容易插错