2013-06-21 5 views
2

Я хочу, чтобы сделать INSERT в таблице IF NOT EXISTSВставить, если не существует в таблице

Так что у меня 2 JTextField с и я хочу добавить переменные, которые я СТГ в JTextfield сек 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

+0

Вы уже получили ответ на свой вопрос здесь: http://stackoverflow.com/a/17219357/1065197 IMO я бы выбрал последнее. –

ответ

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); 
      } 
+0

stmt.executeUpdate ("Вставить в маршрутизатор (edge01, edge02) Выбрать edge01, edge02 Где <Некоторое уникальное поле> не существует (выберите« »из маршрутизатора, где edge01 = '" + jTextField1.getText() + "'и edge02 ='" + jTextField2.getText() + "')"); это мой запрос, почему эта строка красная об этом –

+0

в вашем подзапросе, чтобы не использовать select *, но вместо этого используйте select edge01, а затем сравните, где edge01 не существует в –

+0

. Я тестирую его всегда, это ошибка: com.mysql.jdbc.exceptions .jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'где <Некоторое уникальное поле> не существует (выберите <Некоторое уникальное поле> из маршрутизатора w' по строке 2 –

0

Сначала выберите данные для проверки данных существует: "с помощью выберите * от маршрутизатора. Если он не возвращает данные, тогда вставьте.

+0

, так что то, что я хочу сделать –

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()+"')" 
+0

, это дает мне любую ошибку, но она не добавляется в таблицу. Таблица содержит 3 столбца и колонку thirt, которые я хочу всегда добавьте номер 2700 и первый и второй столбцы, которые они добавили из jTextfields –

Смежные вопросы