2013-04-25 3 views
0

В настоящее время выполняется Java-программа, которая захватывает данные из базы данных MSAccess, и некоторые из этих ошибок крайне расстраивают. Я продолжаю получать этот SQL.Exception: Слишком мало параметров. Ожидаемая ошибка 1 для последних оставшихся ошибок в этой программе.MsAccess SQL Exception Слишком мало параметров

Маленький фон на дб:. Он имеет 3 таблицы (игрок таблицы (11 столбцов), команда таблицы (3 колонки) и Оппонент таблицу (6 колонок)

Эти обе функции и я совершенно уверен, что проблема лежит где-то здесь

conn = Connect.ConnectDB(); 
    String sql = "insert into Player ("+"PlayerLastName,"+"PlayerFirstName,"+"Position)"+ "values("+txtid.getText()+ ",'"+txtname.getText()+"','"+txtaddress.getText()+"')" ; 
    try{ 
     pst = conn.prepareStatement(sql); 
     pst.executeQuery(); 
     pst.setString(1, txtid.getText()); 
     pst.setString(2, txtname.getText()); 
     pst.setString(3, txtaddress.getText()); 
     JOptionPane.showMessageDialog(null, txtid.getText() + " Saved"); 
     UpdateJTable(); 
     //conn.close(); 
    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 

или эту функция

 String sql = "select * from Player where PlayerLastName = " +txtid.getText()+ ""; 
    String pine = null; 
    try{ 
     pst = conn.prepareStatement(sql); 

     ResultSet res; 
     res = pst.executeQuery(); 

     pine.equalsIgnoreCase(jTable1.getModel().getValueAt(rowsu, 10).toString()); 

     while(res.next()){ 
      JOptionPane.showMessageDialog(null, txtname + " " + txtid.getText() + " has a total of " +"4");//+ pine);//res.getInt("Penalties")); 

     } 
     UpdateJTable(); 

    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
+0

Это сообщение об ошибке обычно разрешает имя столбца с ошибкой. – MicSim

ответ

1

с одной стороны, это выглядит, как вы пропустили одиночные кавычки фамилий во вставке й atement.

Могут быть и другие ошибки, это только первое, что я заметил.

Это должно быть довольно легко отладить, если вы просто запишите строку sql перед ее выполнением.

EDIT

Я думаю, что ваши звонки на SetString() также являются проблемой. Вот как вы должны это сделать:

conn = Connect.ConnectDB(); 
    String sql = "insert into Player (PlayerLastName, PlayerFirstName, Position) values(?, ?, ?)"; 
    try{ 
     pst = conn.prepareStatement(sql); 
     pst.setString(1, txtid.getText()); 
     pst.setString(2, txtname.getText()); 
     pst.setString(3, txtaddress.getText()); 
     pst.execute(); 
     JOptionPane.showMessageDialog(null, txtid.getText() + " Saved"); 
     UpdateJTable(); 
     //conn.close(); 
    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
+0

Я очень новичок в sql. Когда вы говорите журнал, вы имеете в виду вывод в консоль? – Fisheries

+0

Несомненно, это сработает. –

+1

FYI, очень плохая практика для объединения пользовательского ввода в оператор SQL. Вместо этого используйте параметры. Google "SQL injection". –

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