Не удается заполнить jtable с помощью инструкции mysql «like»

#java #mysql #jtable #sql-like #resultset

#java #mysql #jtable #sql-подобный #набор результатов

Вопрос:

Я создаю приложение, в котором вы можете сохранять сделки в базе данных. Я хотел бы выполнить поиск сделок в своей базе данных и заполнить мою jtable соответствующими результатами. Я хочу запросить свою базу данных по событию keyrelease. Я знаю, что это неэффективный метод, но мне любопытно, почему я не могу заставить его работать.

Ниже приведен пример кода, который пытается запросить таблицу базы данных с идентификатором и названиями стран. Есть только 3 названия стран, которые начинаются с «D». Каким-то образом я могу распечатать названия стран, но не могу заставить их заполнить jtable.

Ошибка —

 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" I can't get ResultSet rs1 into a Object[][] . It works fine if I do System.out.println(rs1.getString("Name")
  

Ниже приведен код —

 private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
    String columnName[] = new String[] { "Name" };
    Object oss[][] = new Object[3][];
    ResultSet rs1 = null;
    int li = 0;
    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        java.sql.Connection con = DriverManager.getConnection(Url, User, Password);
        Statement st = con.createStatement();
        String query = "SELECT * from unit.cntry WHERE Name LIKE '"   abc.getText()   "%';";
        rs1 = st.executeQuery(query);
    } catch (Exception e) {}
    try {
        while (rs1.next()) {
            oss[li][0] = rs1.getString("Name");
            li  ;
        }
        myTable.setModel(new DefaultTableModel(oss, columnName));
    } catch (SQLException ex) {
        System.out.println(ex.toString());
    } finally {
        try {
            if (rs1 != null) rs1.close();
        } catch (SQLException e) {}
    }
}
  

Комментарии:

1. Какая-либо ошибка? Также не делайте catch(Exception e){} , вам нужно распечатать исключение?

2. «Исключение в потоке «AWT-EventQueue-0″ java.lang. Исключение NullPointerException» Я не могу получить результирующий набор rs1 в объект [][] . Он отлично работает, если я делаю System.out.println(rs1.getString(«Name»)

3. Заменить Object oss[][]=new Object[3][]; на Object oss[][]=new Object[3][1]; . Прямо сейчас у вас нет элемента oss[li][0] .

4. Это сработало просто отлично. Спасибо за помощь.

Ответ №1:

         oss[li] = new Object[1];
        oss[li][0] = rs1.getString("Name");
  

Другие структуры данных могут быть более привлекательными.

Комментарии:

1. Я использую 2-мерный массив, потому что DefaultTableModel не принимает 1-мерный массив в качестве параметра.