Java 将信息从一个mysql表插入到另一个mysql表

Java 将信息从一个mysql表插入到另一个mysql表,java,Java,我正在编写一个程序,它将接收一个学生ID,并验证mysql表中是否存在该ID。如果它确实存在,我希望获取它所在的整行,并将该行复制到另一个表中。目前,程序只会将一个表中的所有行复制到另一个表中。谢谢你的帮助。我在下面插入了一段代码 try { String compareText = IDField.getText().trim(); if(compareText.length() > 0){ Class.forName("com.mysql.jdbc.D

我正在编写一个程序,它将接收一个学生ID,并验证mysql表中是否存在该ID。如果它确实存在,我希望获取它所在的整行,并将该行复制到另一个表中。目前,程序只会将一个表中的所有行复制到另一个表中。谢谢你的帮助。我在下面插入了一段代码

try {
    String compareText = IDField.getText().trim();

    if(compareText.length() > 0){
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/simlab","root","password");
        System.out.println("Connected to database");

        Statement stmt1     = conn.createStatement();
        ResultSet rs1       = stmt1.executeQuery("select * from students where LUID='"+IDField.getText()+"' ");

        boolean isPresent = rs1.next();

        if (isPresent)
        {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/simlab","root","password");
            System.out.println("Connected to database");

            int rows = stmt1.executeUpdate("INSERT INTO skills(ID_Student,LUID_Student)SELECT ID, LUID FROM students");

            if (rows == 0) 
            {
                System.out.println("Don't add any row!");
            } 
            else 
            {
               System.out.println(rows + " row(s)affected.");
               conn.close();
            }

            //System.out.println("Already exists!!");
        }

我怀疑是因为这句话:

int rows = stmt1.executeUpdate("INSERT INTO skills(ID_Student,LUID_Student)SELECT ID, LUID FROM students");

因为,如果解析该行,SELECT语句没有WHERE子句,因此将获取每一行,并因此插入所有内容。

您可以在单个SQL语句中完成这一操作:

INSERT INTO <Dest-Table>
(SELECT * FROM <Src-Table> WHERE ID=?);

它将只复制存在的行。

以及准备好的语句

        String sql = "INSERT INTO abc"
                + "(SELECT id1,id2 FROM pqr)";

        ps1 = con.prepareStatement(sql);


        int rs = ps1.executeUpdate();

        if (rs > 0) {

            update = true;

        } else {
            update = false;
        }

    } catch (Exception ex) {

        ex.printStackTrace();
    } finally {
        try {
            if (ps1 != null) {
                ps1.close();
                ps1 = null;
            }
            if (con != null) {
                con.close();
                con = null;
            }
        } catch (Exception e) {

        }
    }
    return update;

如标题所示,这两个表是位于同一个数据库中,还是位于不同的数据库中?这两个表位于同一个数据库中。谢谢你指出这一点,谢谢。我会研究这个方法。谢谢。我将研究WHERE条款。