我在MS Access数据库中有5行其中一行是序列号,其属性是自动编号我试图将此查询传递给要插入的数据库。
int s= sta.executeUpdate("INSERT INTO stockDB VALUES('"+name+"','"+size+"','"+quantity+"','"+price+"')");
在数据库中,序列号是第一列,然后是名称,大小,数量和价格。
当我尝试插入时出现此错误:
[Microsoft] [ODBC Microsoft Access Driver]查询值和目标字段的数量不同。
我知道我应该把东西放在第一个但是我应该把它放在那里? 我试着将序列号放在最后,但错误是一样的。 我应该在查询中放置什么以便sql接受它但仍然生成数据库中的自动编号?
答案 0 :(得分:3)
你的SQL查询正在拧干 喜欢这个
int s= sta.executeUpdate("INSERT INTO stockDB(name,size,quantity,price) VALUES('"+name+"','"+size+"','"+quantity+"','"+price+"')");
您不需要手动插入序列号,因为它会自动增加,但您必须指定要插入的其余列名和值,并且序列号值将自动调整为自动增量
答案 1 :(得分:1)
尝试使用不同格式的查询 -
int s = sta.executeUpdate("insert into stockDB ('name', 'size', 'quantity', 'price') values('" + name + "','" + size + "','" + quantity + "','" + price + "')");
答案 2 :(得分:0)
您需要将序列号字段指定为AUTO_INCREMENT,以便在表格中插入eecord时自动为字段生成值。
然后在INSERT查询和供应值中指定字段名称。