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