Удалить в JTable с помощью connect SQL? - PullRequest
0 голосов
/ 12 июля 2020

Я хочу удалить всю строку данных, которую я выбираю, когда нажимаю в столбце Id, поэтому я пытаюсь использовать этот код, но у меня такая ошибка: «java. sql .SQLException: Ошибка преобразования при преобразовании значения nvarchar «T123» в тип данных int. «T123» - это данные идентификатора

 if (e.getSource() == delete) //button delete {
        int ret = JOptionPane.showConfirmDialog(this, "Do you want to delete?", "Confirm", JOptionPane.YES_NO_OPTION);
        if (ret != JOptionPane.YES_OPTION) {
            return;
        }
        Connection c = null;
        PreparedStatement ps = null;
        String url = "net.sourceforge.jtds.jdbc.Driver";
        int id = tb.getSelectedRow();
        try {
            Class.forName(url);
            String db = "jdbc:jtds:sqlserver://DUCTHANG:1433/student";
            c = DriverManager.getConnection(db, "username", "password");
            ps = c.prepareStatement("Delete From info where ID = ?");
            ps.setInt(1, id); //first column's value was choose in table
            ret = ps.executeUpdate();
            if (ret != -1) {
                JOptionPane.showMessageDialog(this, "This Student has been deleted");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (c != null) {
                    c.close();
                }
                if (ps != null) {
                    ps.close();
                }
            } catch (Exception ex2) {
                ex2.printStackTrace();
            }
        }
    }

1 Ответ

0 голосов
/ 12 июля 2020

Исходя из того, что вы описали, столбец идентификатора вашей таблицы базы данных имеет тип NVCHAR, но вы устанавливаете его как int. Еще один момент, на который следует обратить внимание: вам нужно получить идентификатор строки на основе идентификатора выбранной строки, а затем использовать setString в своем операторе ps.

int id = tb.getSelectedRow();
// Now, get respective DB Row ID into String idString and then use the following
// statement in place of ps.setInt(1, id);
ps.setString(1, idString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...