我正在构建一个应用程序,您可以在其中将交易保存到数据库。我想在数据库中搜索交易,并用相关结果填充jtable。我想在keyrelease事件中查询数据库。我知道这不是一种有效的方法,但是我很好奇为什么我无法使它起作用。
下面是一个示例代码,尝试查询具有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) {}
}
}
最佳答案
oss[li] = new Object[1];
oss[li][0] = rs1.getString("Name");
其他数据结构可能更有吸引力。