在运行此代码时,我得到了" JAVA错误"
在控制台中我看到了
- 连接到数据库
- 连接已成功
- 从project.user
中选择*- 1
- 显示java.lang.NullPointerException
- ...
- ...
- ...
- 显示java.lang.NullPointerException
public void showuser(){
System.out.println("Connection to db");
try {
Connection con = DriverManager.getConnection(url, "", "");
System.out.println("Connection suceeded");
String sql = "Select * from project.user";
System.out.println(sql);
Statement st = con.createStatement();
ResultSet rs= st.executeQuery(sql);
String title[]={"ID","Name","Status","Nomber","Balance","Login","Password"};
DefaultTableModel aModel = new DefaultTableModel();
aModel.setColumnIdentifiers(title);
int i=0;
while (rs.next())
{ Object objects[]= new Object[7];
i=0;
while(i<7)
{
objects[i]=rs.getObject(i+1);
System.out.println(objects[i].toString());
i++;
}
aModel.addRow(objects);
}
jTable1.setModel(aModel);
con.close();
}
catch (SQLException ex)
{
while(ex!= null)
{
ex=ex.getNextException();
}
JFrame f1= new JFrame();
JOptionPane.showMessageDialog(f1,"SQL error");
System.out.println(ex);
}
catch (java.lang.Exception ex)
{
ex.printStackTrace();
JFrame f1= new JFrame();
JOptionPane.showMessageDialog(f1,"JAVA error");
System.out.println(ex);
}
}
答案 0 :(得分:0)
我不知道自从我上次使用ResultSets以来问题是不是很久以前但你是rs.getObject(i + 1)...如果getObject()只返回你的列值超过索引(7列(最大索引= 6)但你在你的while(i&lt; 7循环)中由于i + 1而转到6 + 1。如果bevhaviour ob getObject那么它返回null如果它在给定索引处不包含任何值,您将在对象[i] .toString()处获得NullPointer 我希望这可以帮助你 编辑MadProgrammer指出我关于ResultSet索引的假设是错误的。只是忽略这个答案