2014-06-26 68 views
0

我在构建一个应用程序,您可以在其中将交易保存到数据库。我想在我的数据库中搜索交易,并将相关结果填入我的jtable。我想在keyrelease事件上查询我的数据库。我知道这不是一种有效的方法,但我很好奇为什么我无法实现它。无法用mysql“like”语句填充jtable

下面是一个示例代码,它尝试使用ID和国家/地区名称查询数据库表。只有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) {} 
    } 
} 
+0

有没有错误?也不要'catch(Exception e){}',你需要打印异常? –

+0

“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”我无法将ResultSet rs1获取到Object [] []中。它工作正常,如果我做System.out.println(rs1.getString(“Name”) –

+0

替换'对象oss [] [] =新对象[3] [];'与'对象oss [] [] =新对象[3] [1];'现在你没有元素'oss [li] [0]' –

回答

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

其他数据结构可能会更吸引人。

+0

我使用二维数组,因为DefaultTableModel don'以一维数组为参数。 –