我正在编写一个程序,该程序将接收学生ID并验证该ID是否存在于mysql表中。如果确实存在,我想获取它存在的整行并将该行复制到另一个表。目前,程序只会将表中的所有行复制到另一个表中。任何帮助赞赏。我在下面插入了一段代码。
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!!");
}
答案 0 :(得分:1)
你们都可以在一个SQL语句中做到这一点:
INSERT INTO <Dest-Table>
(SELECT * FROM <Src-Table> WHERE ID=?);
它只会复制存在的行。
答案 1 :(得分:0)
我怀疑这是由于这一行:
int rows = stmt1.executeUpdate("INSERT INTO skills(ID_Student,LUID_Student)SELECT ID, LUID FROM students");
因为,如果解析了那一行,SELECT
语句没有WHERE
子句,因此将获得每一行,因此插入所有行。
答案 2 :(得分:0)
准备好的陈述
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;