仅当使用了列列表并且 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,?,?) 插入时指定列
------其他解决方案--------------------有自增列的表,插入的时候不要写上自增列,除非你取消了自增,比较好的习惯是插入哪列就显式写出来,这样一一对应,也不容易插错