我尝试将数据插入数据库时​​,我的jtable收到NullPointerException错误

时间:2017-05-12 10:23:39

标签: java mysql swing nullpointerexception

我是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:

请帮我解决这个问题。

1 个答案:

答案 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都不能问一个问题!!!