我有示例代码。
public void UpdateTable1() {
for (int t = 0; t < 20; t++) {
if (consumer == 1 && number == 1 && provider1 == 31 && feedback == 1) {
try {
Class.forName(driverName);
con = DriverManager.getConnection(url + dbName, "root", "mysql");
try {
Statement st = con.createStatement();
int val = st.executeUpdate("INSERT Consumer1 VALUES ("
+ 31 + "," + "'Printer'" + ", " + 1 + " " + ")");
System.out.println("1 row affected");
} catch (SQLException s) {
System.out.println("SQL statement is not executed!");
}
con.close();
}
}
}
}
我想将同一组值(31,printer,1)插入到表consumer2,consumer3中。如果不使用其他try catch语句就可以...请帮助我。
答案 0 :(得分:1)
我希望我没有冒犯,但你确定你完全理解try-catch的工作原理吗?
try catch语句在for for for t循环中的原因是(可能)某人想要确保一次失败不会阻止循环的其他迭代发生。你最终可能会以损坏的数据结束。
您必须做出的决定是,您是否要在同一个try-catch下进行所有三次插入。
要轻松做三次插入,在i上从1到3进行循环,每次创建一个不同的语句,通过添加字符串,这样第一次表是Consumer1,第二次是Consumer2,等等。将整个循环放在try catch中,或者将-try-catch放在循环体内。
答案 1 :(得分:0)
你可以替换
"INSERT Consumer1 VALUES ("
与
"INSERT INTO Consumer" + (t + 1) + " VALUES ("
答案 2 :(得分:0)
我对此不太清楚。每个连接可以创建多少语句是否有一些限制?或者每次更新后连接都会关闭吗?
如果没有,那么这应该有效
Statement st2 = con.createStatement();
int val = st.executeUpdate("INSERT Consumer2 VALUES ("+ 31 + "," + "'Printer'" + ", " + 1 + " " + ")");
Statement st3 = con.createStatement();
int val = st.executeUpdate("INSERT Consumer3 VALUES ("+ 31 + "," + "'Printer'" + ", " + 1 + " " + ")");
如果连接关闭或者你一次只能做一个语句,那么我猜你可以把整个事情移到私有方法然后用不同的参数调用它,比如:
private boolean doInsert(String tableName) {
con = DriverManager.getConnection(url + dbName, "root", "mysql");
try {
Statement st = con.createStatement();
int val = st.executeUpdate("INSERT " + tableName + " VALUES ("
+ 31 + "," + "'Printer'" + ", " + 1 + " " + ")");
System.out.println("1 row affected");
return true;
} catch (SQLException s) {
System.out.println("SQL statement is not executed!");
return false;
}
}