Обновить записи из базы данных доступа выбранной строки Java Swing - PullRequest
0 голосов
/ 30 января 2019

Как исправить ошибку?Я пытаюсь обновить данные строки Jtable и базу данных Microsoft Access, но возникла проблема.

Обновление всех строк из таблицы доступа вместо выбранной строки.

Может кто-нибудь исправить ошибку?или покажи мне код для этого?

**My code is**

DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
         String id, fname, lname;
       connection = ConnectionDb.getConnection();
       try{

           String value1=txtFname.getText();
           String value2=txtLname.getText();
           PreparedStatement preparedStatement=connection.prepareStatement("Update Student SET FirstName = '"+value1+"' , LastName ='"+value2+"'  where ID = +id");


              preparedStatement.execute();

     int i = jTable1.getSelectedRow();

       if(i >= 0)
       {
         jTable1.setValueAt(txtFname.getText(), i, 0);
           jTable1.setValueAt(txtLname.getText(), i, 1);
       }else
       {
           JOptionPane.showMessageDialog(null, "Error");
       }
        connection.commit();
    }catch(Exception e){
        e.printStackTrace();
       }
    }                         

1 Ответ

0 голосов
/ 30 января 2019

В вашем коде есть несколько проблем:

Первый: Вы не указали Id в предложении Where правильно.Таким образом, обновление обновляет все.

// Your "Where" means basically "Where 1 = 1"
PreparedStatement preparedStatement=connection.prepareStatement("Update Student SET FirstName = '"+value1+"' , LastName ='"+value2+"'  where ID = +id");

Второе: Лучше использовать параметры, а не просто объединять ваши переменные.Вот как вы могли бы это сделать:

    DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
    String id, fname, lname;
    connection = ConnectionDb.getConnection();
    try{

        String value1=txtFname.getText();
        String value2=txtLname.getText();
        PreparedStatement preparedStatement = connection.prepareStatement("Update Student SET FirstName = ? , LastName = ?  where ID = ?");

        preparedStatement.setString(1, value1);
        preparedStatement.setString(2, value2);
        preparedStatement.setString(3, id);

        preparedStatement.execute();

        // Code continues..
        ....

Третье: Где ваше значение идентификатора?Вы создали переменную во второй строке, но не указали там никакого значения.Вам необходимо извлечь значение и использовать его для обновления данных Student.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...