Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用DB2自动增量获取异常_Java_Sql_Jdbc_Netbeans_Db2 - Fatal编程技术网

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:您肯定是对的。我的回答中增加了警告。谢谢你,这起作用了。顺便说一句,我之所以不使用预先准备好的陈述,是因为我的教授不允许我们使用,而且他也没有教我们。