-1

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 参数,所以我的代码是否正确。

4

2 回答 2

3
String insert = "INSERT INTO PPN_WORKFLOW(C2_F_Date,C2_Completed) VALUES(?,?)";
stmt = conn.prepareStatement(insert);

看起来prepareStatement()像工厂方法。给定输入,它返回一个处于特定状态的对象。此时,您传递给它的输入就是INSERT语句。

尝试为不同的目的重用同一个对象是没有意义的,因为该方法返回了一个为您提供的参数量身定制的对象,在insert. 您将需要创建另一个对象,为不同的目的量身定制。这就是您在代码中所做的。

于 2013-03-07T16:35:55.070 回答
1

try如果第二个依赖于第一个使用... while... ,则一次向每个表插入值。

try{
        //insert to first table
        ///while true
    try{

     //insert to second table
        }finally{


        }
        }finally{
    //close resources
    }
于 2013-03-07T17:05:10.547 回答