如何使用deleteRow()方法从多个表中删除行

时间:2013-05-05 10:37:19

标签: java sql jdbc resultset delete-row

我一直在研究以下代码:

import java.sql.*;


public class deleteRowDemo
{
    public static void main(String args[])
    {
       Connection con;
       Statement stmt;
       ResultSet rs;
       PreparedStatement ps;
       try    
       {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con=DriverManager.getConnection("jdbc:odbc:Project");
            stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
            rs=stmt.executeQuery("select Mword, from Model,Stud where Mword=Sword");
            while(rs.next())
            {
                 ps=con.prepareStatement("insert into Compare (Cword) values (?)");
                 ps.setString(1,rs.getString(1));
                 ps.executeUpdate();  
                 rs.deleteRow();
            }
            con.close();   
       } catch(Exception e)
       {
          System.out.println(e);  
       }
   }
}

模型和梭哈有两个表。比较两个表,并将两个表中相似的所有单词插入另一个名为Compare的表中,同时我希望删除Stud表和Model表中的单词。当select语句只有一个表时,函数deleteRow()可以正常工作,但是如何处理具有多个表的复杂select语句。

1 个答案:

答案 0 :(得分:0)

您应该使用DELETE语句删除该行。具体应该如何完成取决于您的数据模型。

而不是rs.deleteRow();在while循环中,您可以执行以下操作:

PreparedStatement deleteModel  = con.prepareStatement("DELETE Model WHERE Mword = ?"); // You might need to modify this query if Mword is not unique in Model.
deleteModel.setString(1, rs.getString(1));
deleteModel.executeUpdate();
//Do the same for Stud.