0

Java を使用して MySQL のデータベースを更新する際に問題があります。具体的には、スコア (GUI インターフェイスからの最後のスコア) を更新した後にこの問題が発生します。更新は成功しますが、更新されたレコードを取得しようとすると、ヌル ポインター例外 (レコードのピクチャの値をヌルに設定します)。記述されたコードの量が多いため、データベースの更新用に記述したコードだけを挿入することにしました。データベース内の最後のレコードの更新。レコードが取得されているときに画像の値が null に設定され、これにより java.lang.null ポインター例外が発生します。ここで私を助けてください。事前に感謝します。アップデート用コード

 private void upActionPerformed(java.awt.event.ActionEvent evt) {                                   

 //checks if user wants to update an empty field or record.   
    if ( m.equals("") || f.equals("") || l.equals("") || g.equals("") || d.equals("") || p.equals("") || a.equals("")) {
        JOptionPane.showMessageDialog(null, "Please fill in all the details");

    }else if(fi.equals("")){
       JOptionPane.showMessageDialog(null,"Please re-update picture");
    }
    else{
   int confirmUpdate = JOptionPane.showConfirmDialog(null, "Are you sure you want to update this record?", "Confirm Update", JOptionPane.YES_NO_OPTION);
     if (confirmUpdate == JOptionPane.YES_OPTION) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/ass1", "root", "root");
//SQL update statement to update record based on prmary key mn.
            ps = con.prepareStatement("Update Student SET fn=?,ln=?,gn=?,dp=?,pn=?,ad=?,mt=?,ph=?,ch=?,zo=?,pp=?,pc=?,pz=?,tt=?,av=?,gd=?,re=?,pic=?,fil=? Where mn='" + m + "'");


            ps.setString(1, f);
            ps.setString(2, l);
            ps.setString(3, g);
            ps.setString(4, d);
            ps.setString(5, p);
            ps.setString(6, a);

            ps.setString(7, h);
            ps.setString(8, s);
            ps.setString(9, i);
            ps.setString(10, y);
            ps.setString(11, yp);
            ps.setString(12, pm);
            ps.setString(13, zp);
            ps.setString(14, al);
            ps.setString(15, ge);
            ps.setString(16, de);
            ps.setString(17, rk);

            ps.setBytes(18, pi);
            ps.setString(19, fi);

            ps.executeUpdate();
            JOptionPane.showMessageDialog(null, "Data Updated Successfully", "Data Updated", JOptionPane.INFORMATION_MESSAGE);
            dispose();
         new view().setVisible(true);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Error:" + e);
        }
      }
    }
}                                  

NULL ポインター例外を発生させる変更中の最後のレコードの変数は rk であることに注意してください。これは、変数 zp として示される最後のレコードから計算されます。私の質問が明確であることを願っています。よろしくお願いします。

4

1 に答える 1