Java 使用DB2自动增量获取异常
我创建了下表:Java 使用DB2自动增量获取异常,java,sql,jdbc,netbeans,db2,Java,Sql,Jdbc,Netbeans,Db2,我创建了下表: "CREATE TABLE ParsonCollection " + "(id integer not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)," + "name varchar(20)," + "eye varchar(20)," + "hair varchar(
"CREATE TABLE ParsonCollection "
+ "(id integer not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),"
+ "name varchar(20),"
+ "eye varchar(20),"
+ "hair varchar(20),"
+ "height varchar(20),"
+ "weight varchar(20),"
+ "PRIMARY KEY (id))";
然后我尝试插入到表中,这就是我遇到问题的地方。当我尝试更改“id”列时,会出现一个错误,提示“java.sql.SQLSyntaxErrorException:尝试修改标识列“id”。”insert语句如下所示:
"insert into ParsonCollection values(" + q_surround(Name) + ","
+ q_surround(Eye) + "," + q_surround(Hair) + "," + q_surround(Height) + "," + q_surround(Weight) + ",1" + ")";
"insert into ParsonCollection values(" + q_surround(Name) + ","
+ q_surround(Eye) + "," + q_surround(Hair) + "," + q_surround(Height) + "," + q_surround(Weight) + ")";
但是,当我去掉插入到“id”中的字段时,会出现以下错误:“java.sql.SQLSyntaxErrorException:分配的值的数量与指定或隐含列的数量不同。”下面是此insert语句的外观:
"insert into ParsonCollection values(" + q_surround(Name) + ","
+ q_surround(Eye) + "," + q_surround(Hair) + "," + q_surround(Height) + "," + q_surround(Weight) + ",1" + ")";
"insert into ParsonCollection values(" + q_surround(Name) + ","
+ q_surround(Eye) + "," + q_surround(Hair) + "," + q_surround(Height) + "," + q_surround(Weight) + ")";
我该怎么过这关?似乎当我解决一个异常时,会弹出另一个异常,反之亦然。谢谢。您不能分配给标识列。由于无法为insert传递所有值,因此需要枚举列(忽略标识列):
旁注:您的代码是对SQL注入打开的。您应该认真考虑使用准备语句和绑定参数,而不是连接查询字符串。 < P>出于兴趣,另一种解决方案是使身份栏<代码>隐式隐藏< /代码> 。请注意,您正在进行的字符串连接容易受到SQL注入的攻击。虽然它不能解决您当前的问题,但您应该使用一个预先准备好的语句。什么,对SQL注入漏洞不发表评论?@Clockwork Muse:您肯定是对的。我的回答中增加了警告。谢谢你,这起作用了。顺便说一句,我之所以不使用预先准备好的陈述,是因为我的教授不允许我们使用,而且他也没有教我们。