1)我可以使用一个预准备语句将数据传递给java中的多个表吗?我正在使用JDBC驱动程序。
try
{
conn = ac.getConnection();
String insert = "INSERT INTO PPN_WORKFLOW(C2_F_Date,C2_Completed) VALUES(?,?)";
stmt = conn.prepareStatement(insert);
stmt.setDate(1, date);//question 2
stmt.setInt(2, 1);
stmt.executeUpdate();
stmt.close();
String insert2 = "INSERT INTO CREATE_ERF(Purc_Part_New_F_Date,Purc_Part_New_Completed) "
+ "VALUES(?,?)";
stmt = conn.prepareStatement(insert2);
stmt.setDate(1, date);
stmt.setInt(2,1);
stmt.executeUpdate();
}
catch(SQLException | ClassNotFoundException e) {e.printStackTrace();}
finally
{
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
}
这里我对表PPN_WORKFLOW和CREATE_ERF使用stmt(PreparedStatement)?
2)PPN_WORKFLOW表由更多的参数组成,如
PPN_WORKFLOW(C1_S_Date,C2_F_Date,C2_Completed)
但我想更新2和3参数,那么我的代码是否正确。
答案 0 :(得分:3)
String insert = "INSERT INTO PPN_WORKFLOW(C2_F_Date,C2_Completed) VALUES(?,?)";
stmt = conn.prepareStatement(insert);
像工厂方法一样看prepareStatement()
。它在给定输入的情况下返回处于特定状态的对象。此时,您传递给它的输入是INSERT
语句。
尝试为同一个目的重用同一个对象没有意义,因为该方法返回了一个为您提供的参数定制的对象,insert
。您需要根据不同的目的创建另一个对象。这是你在代码中做的。
答案 1 :(得分:1)
如果第二个使用try
while
... try{
//insert to first table
///while true
try{
//insert to second table
}finally{
}
}finally{
//close resources
}
....
{{1}}