2

如果不存在,我想做一个 INSERT 到表中

所以我有 2 JTextFields,我想将我 st 的变量添加到JTextfields int 表中,但条件是它们在表中不存在

这是代码,它给了我关于查询的错误:

try{
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+db, "root", "123456");
       stmt = conn.createStatement();
       stmt.executeUpdate(
           "insert into router (edge01,edge02)\n" +
           "Select edge01, edge02 " +
           "Where not exists(select * from router " +
                            "where edge01='" + jTextField1.getText() +
                              "' and edge02='" + jTextField2.getText() + "')");
}
catch (SQLException ex) {
    Logger.getLogger(bdd.class.getName()).log(Level.SEVERE, null, ex);
}

错误:

SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Where not exists(select * from router where edge01='fffffffff' and edge02='fffff' at line 2

4

3 回答 3

0

尝试改用此查询:

insert into router (edge01,edge02)
 select edge01,edge02 from router where edge01 not in(select edge01 from router where    
       edge01='"+jTextField1.getText()+"' and edge02='"+jTextField2.getText()+"')"
于 2013-06-21T10:54:37.050 回答
0

你的查询有错误

try{
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+db, "root", "123456");
       stmt = conn.createStatement();
       stmt.executeUpdate("insert into router (edge01,edge02)\n" +
" Select edge01,edge02 Where <Some unique Field> not exists in(select "<Some unique Field>" from router where edge01='"+jTextField1.getText()+"' and edge02='"+jTextField2.getText()+"')");

}          catch (SQLException ex) {
               Logger.getLogger(bdd.class.getName()).log(Level.SEVERE, null, ex);
           }
于 2013-06-21T10:52:31.030 回答
0

首先选择数据以检查数据是否存在:'using select * from router'。如果它没有返回数据,则插入。

于 2013-06-21T10:53:25.930 回答