繁体   English   中英

从数据库插入记录和检索记录(空指针异常)

[英]Insert Record and Retrieve Record from database (null pointer exception)

当我尝试插入记录或从数据库检索记录时,会发生nullpointerexception,这是我的维护成员控件类

    package control;
    import da.MemberDa;
    import domain.Member;

    public class MaintainMemberControl {
    private MemberDa memberDa;


    public MaintainMemberControl(){
    memberDa = new MemberDa();
    }

    public void InsertRecord(String studentID, String name, String membership, String      danceStyle, String gender, String faculty, String programme, String yearOfStudy, String dateJoined, String contactNumber,String email){
       memberDa.InsertRecord(studentID, name, membership, danceStyle, gender, faculty, programme, yearOfStudy, dateJoined, contactNumber,email);
     }
    public Member selectRecord(String studentID) {
    return memberDa.getRecord(studentID);
     }

     }

MemberDa.java这是我的memberDa java类

    package da;

    import domain.Member;
    import java.sql.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;

    public class MemberDa {

    private String HOST = "jdbc:derby://localhost:1527/GoogleDinosaur";
    private String USERNAME = "GoogleDinosaur";
    private String PASSWORD = "123456";
    private String TABLENAME = "members";

    private Connection conn;
    private PreparedStatement stmt;




    public MemberDa(){
        createConnection();
    }

    private void createConnection(){
        try{
        conn = DriverManager.getConnection(HOST, USERNAME, PASSWORD);

    } catch(SQLException ex){
        JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
    }
    }

  public Member getRecord(String studentID) {
    String queryStr = "SELECT * FROM " + TABLENAME + " WHERE studentID = ?";
    Member member = null;
    try {
        stmt = conn.prepareStatement(queryStr);
        stmt.setString(1, studentID);
        ResultSet rs = stmt.executeQuery();

        if (rs.next()) {
            member = new Member(studentID, rs.getString("Name"), rs.getString("membership"),rs.getString("dancestyle"),rs.getString("gender"),rs.getString("faculty"),rs.getString("programme"),rs.getString("yearofstudy"),rs.getString("datajoined"),rs.getString("contactnumber"),rs.getString("email"));
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
    }
    return member;
}

public void InsertRecord(String studentID, String name, String membership, String danceStyle, String gender, String faculty, String programme, String yearOfStudy, String dateJoined, String contactNumber,String email) {
    String queryStr = "INSERT INTO " + TABLENAME + " VALUES (?,?,?,?,?,?,?,?,?,?,?)";
    Member member = null;
    try {

    stmt = conn.prepareStatement(queryStr);
    stmt.setString(1,studentID);
    stmt.setString(2,name);
    stmt.setString(3,membership);
    stmt.setString(4,danceStyle);
    stmt.setString(5,gender);
    stmt.setString(6,faculty);
    stmt.setString(7,programme);
    stmt.setString(8,yearOfStudy);
    stmt.setString(9,dateJoined);
    stmt.setString(10,contactNumber);
    stmt.setString(11,email);

    stmt.executeUpdate();
    conn.close();
    } catch (SQLException | NumberFormatException ex) {

    }




}

 public static void main(String[] args) {

    MemberDa memberDa = new MemberDa();
}
}

MemberTab_redo.java

jbSubmit.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String rbGender= null;

            int prompt = JOptionPane.showConfirmDialog(null, "Insert new member record? ", "Warning", JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);

            if (e.getSource() == jbSubmit) {
                if (jrbMale.isSelected()) {
                    rbGender = "Male";
                } else if (jrbFemale.isSelected()) {
                    rbGender = "Female";
                }
            }
            if(prompt == JOptionPane.YES_OPTION){
            memberContr.InsertRecord(jtfStudentID.getText(),jtfName.getText(), (String)jcbMembership.getSelectedItem(), (String)jcbDanceStyle.getSelectedItem(),rbGender,(String) jcbFaculty.getSelectedItem(), jtfProgramme.getText(),(String)jcbYearOfStudy.getSelectedItem(),jtfDateJoined.getText(),jtfContactNumber.getText(),jtfEmail.getText());

            } 
            }
    });

单击提交按钮时,每次都会出现空指针异常错误。

从OP评论:

以下是错误,

line 313 is InsertRecord statement Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ui.MemberTab_redo$2.actionPerformed(MemberTab_redo.java:313) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.jav‌​a:252) 

这行:

memberContr.InsertRecord(jtfStudentID.getText(),jtfName.getText(), (String)jcbMembership.getSelectedItem(), (String)jcbDanceStyle.getSelectedItem(),rbGender,(String) jcbFaculty.getSelectedItem(), jtfProgramme.getText(),(String)jcbYearOfStudy.getSelectedItem(),jtfDateJoined.ge‌​tText(),jtfContactNumber.getText(),jtfEmail.getText());

NPE指向InsertRecord行,这意味着传递给该方法的一个(或多个)值是NULL 您需要查看代码或运行一些调试来找出哪个。 jtfStudentIDjcbMembership

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM