我是java和netbeans的新手...我想将数据从jtable发送到database.after参考很多代码我设法得到以下代码。 但是当我运行它时,它给了我错误:java.lang.NullPointerException。我真的找不到错误的位置。
这是我的代码,
try{
int rows = jTable2.getRowCount();
//int cols = jTable2.getColumnCount();
String myUrl = "jdbc:mySql://localhost:3306/hospital";
Connection con = DriverManager.getConnection(myUrl,"root","");
con.setAutoCommit(false);
String query = "insert into invoice (In_id,Admission_A_id,Hospital_Charges,Doctor_Charges,Doctor_visit_charge,Medicine_charge,Food_charge,Total) values (?,?,?,?,?,?,?,?)";
PreparedStatement pst = con.prepareStatement(query);
for(int row=0; row<rows; row++){
String st1 = jTable2.getValueAt(row, 0).toString();
int HosCharge = Integer.parseInt(st1);
String st2 = jTable2.getValueAt(row, 1).toString();
int DocCharge = Integer.parseInt(st2);
String st3 = jTable2.getValueAt(row, 2).toString();
int DocVisitCharge = Integer.parseInt(st3);
String st4 = jTable2.getValueAt(row, 3).toString();
int MedCharge = Integer.parseInt(st4);
String st5 = jTable2.getValueAt(row, 4).toString();
int FoodCharge = Integer.parseInt(st5);
String st6 = jTable2.getValueAt(row, 5).toString();
int Total = Integer.parseInt(st6);
pst.setInt(1,Integer.parseInt(tt1.getText()));
pst.setInt(2, Integer.parseInt(tt2.getText()));
pst.setInt(3,HosCharge);
pst.setInt(4,DocCharge);
pst.setInt(5, DocVisitCharge);
pst.setInt(6,MedCharge);
pst.setInt(7,FoodCharge);
pst.setInt(8,Total);
pst.addBatch();
}
pst.executeBatch();
con.commit();
con.close();
}
catch(Exception e){
e.printStackTrace();
}// TODO add your handling code here:
请帮我解决这个问题。
答案 0 :(得分:1)
String st6 = jTable2.getValueAt(row, 5).toString();
所以上面的陈述引起了这个问题。
如果盯着代码行没有用,那么你知道如何解决基本问题吗?
要做的第一件事是简化代码,以便您只在每行代码中调用一个语句。此外,您可以显示两个语句中使用的每个变量的值:
System.out.println("Table: " + jTable2);
Object cellData = jTable2.getValueAt(row, 5);
System.out.println("Data: " + cellData);
String st5 = cellData.toString();
现在您认为会发生什么?您将获得一个不同的行号,告诉您问题所在,这样您就会知道问题是表变量还是表中的数据。一旦你知道你解决了问题。
这是标准调试。每次得到简单的NullPointerException都不能问一个问题!!!