Java INSERT INTO语句在我的for each循环中不起作用
我有这样的代码Java INSERT INTO语句在我的for each循环中不起作用,java,sql,for-loop,jdbc,Java,Sql,For Loop,Jdbc,我有这样的代码 Let m = 7; for(int i=0, i<m, i++){ con.setAutoCommit(false) PreparedStatement ps = con.prepareStatement("INSERT INTO Numbers VALUES (i, "This is sparta")"); ps.executeUpdate(); con.commit(); con.setAutoCommit(true); } 而不是 Number
Let m = 7;
for(int i=0, i<m, i++){
con.setAutoCommit(false)
PreparedStatement ps = con.prepareStatement("INSERT INTO Numbers VALUES (i, "This is sparta")");
ps.executeUpdate();
con.commit();
con.setAutoCommit(true);
}
而不是
Number Name
_________________________________
1 This is sparta
2 This is sparta
3 This is sparta
4 This is sparta
5 This is sparta
6 This is sparta
7 This is sparta
我哪里出了大错
谢谢这不是一个预先准备好的语句,即使你让它工作了。你应该使用值占位符 充分利用已编制的报表
con.setAutoCommit(false);
final String value = "This is Xerxes";
PreparedStatement ps = con.prepareStatement("INSERT INTO Numbers VALUES (?,?)");
for (int i=0, i<m, i++){
ps.setInt(1,i);
ps.setString(2,value);
ps.executeUpdate();
}
ps.close();
con.commit();
在所有insert语句完成后,您应该将其设置为一次提交请发布真实代码,您所拥有的无法编译。两条注释。1按预期使用PreparedStatement,创建带有INSERT INTO Numbers值?,?的语句?,?然后绑定这些值。2此查询错误严重,请发布一个不会引发大规模错误的查询。如果您不想发布真实代码,请确保此查询将按照您描述的方式编译并再现您的问题。您好,我一直收到此错误“数据截断:列“Number”的值超出范围”。这是因为它没有创建7条记录,而是创建了一条值为1-7的记录。如何修复此问题?首先删除旧内容;它应该会起作用。也许您的第一个数字字段有一个自动递增字段,但位数有限。那么最好只使用数字INT AUTOINCR,而不限制为1位数字,或者删除AUTOINCR。@Joop感谢您在循环外声明准备好的语句并关闭它:从Java 7开始,您可以尝试PreparedStatement ps=con.pre。。。{for{}catch SQLException e{…}不带关闭。但是,如果您想显示是哪些单个值导致了错误,for循环的内容也必须接收try-catch。如果您使用的是Java6,请使用parseIntn,10。
con.setAutoCommit(false);
final String value = "This is Xerxes";
PreparedStatement ps = con.prepareStatement("INSERT INTO Numbers VALUES (?,?)");
for (int i=0, i<m, i++){
ps.setInt(1,i);
ps.setString(2,value);
ps.executeUpdate();
}
ps.close();
con.commit();