我的表的结构:id int AUTO_INCREMENT PRIMARY KEYtitle texturl textage int这是我尝试将数据保存到此表中的方法:PreparedStatement ps=con.prepareStatement("insert into table(title, url, age) values ('\"+title+\",\"+url+\",\"+age+\"')");System.out.println("Connected database successfully..");ps.executeUpdate(); 但是当我运行该应用程序时,我得到了java.sql.SQLException:列数与第1行的值数不匹配我猜问题可能出在id列中,如何解决?
2 回答

Helenr
TA贡献1780条经验 获得超4个赞
问题不在于id专栏。
从该语句看来,所有列都带有引号。因此,在SQL中,似乎只有一列
'"title","url","age"'
您可能想要拥有的是
"insert into table(title, url, age) values ('" + title + "','" + url + "'," + age + ")"
甚至更好,因为这是准备好的声明
"insert into table(title, url, age) values (?, ?, ?)"

冉冉说
TA贡献1877条经验 获得超1个赞
实际上,您有一个不同的问题(您仅传递了一个“值”)-
PreparedStatement ps=con.prepareStatement("insert into table(title, url, age) "
+ "values (?,?,?)");
ps.setString(1, title);
ps.setString(2, url);
ps.setInt(3, age); // <-- at a guess!
您原来的查询将所有三个值放在一个字符串中'\"+title+\",\"+url+\",\"+age+\"'。
添加回答
举报
0/150
提交
取消