2013-04-25 3 views
2

Я пытаюсь вставить данные, которые пользователь вводит в jtextfield в базу данных msaccess. Когда я пытаюсь выполнить свою инструкцию sql, я получаю сообщение об ошибке Синтаксис в инструкции INSERT INTO. Я проверил свой sql-оператор и попробовал несколько разных вещей, но не могу найти какой-либо синтаксической ошибки.Синтаксис Ошибка вставить до? MSAccess

conn = Connect.ConnectDB(); 
    String sql = "insert into Team (" 
      +"TeamID," 
      +"TeamCity," 
      +"TeamMascot," 
      + "values("+txtid.getText()+ ",'"+txtname.getText()+"','"+txtaddress.getText()+"')" ; 
    try{ 
     pst = conn.prepareStatement(sql); 
     pst.execute(); 
     JOptionPane.showMessageDialog(null, "Entry " + txtid.getText() + " Saved"); 
     UpdateJTable(); 
     //conn.close(); 
    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 

ответ

0

ошибка является дополнительной запятой и без закрывающей скобки перед ключевым словом values

String sql = "insert into Team (" 
      +"TeamID," 
      +"TeamCity," 
      +"TeamMascot," // <<== HERE, change comma into closing parenthesis 

Кстати, ваше заявление уязвимо с SQL Injection. Вы можете избежать этого, если вы параметризуете значения. Например,

String sql = "insert into Team (TeamID,TeamCity,TeamMascot) values (?, ?, ?, ?)" 
pst = conn.prepareStatement(sql); 
pst.setString(1, txtid.getText()); 
pst.setString(2, txtname.getText()); 
pst.setString(3, txtaddress.getText()); 
+1

Благодаря тонну для четкого ответа и многое другое! Это просто для небольшого школьного проекта, поэтому я не слишком беспокоюсь о SQL Injection, но я обязательно буду вносить мои значения в параметр в будущем. – Fisheries

+0

приветствую ': D' Добро пожаловать, кстати, кстати! –

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