私は、コネクタのコードを持って、私はviewHistoryと呼ばれる別のクラスのコードがあります。今、私がしようとしているのは、ユーザーがstudentID番号を入力できるようにすることです。その後、関連する出席履歴が表示されます。しかし、それはcompiloingですが、何かを表示するかどうかを確認するために数字を入力するとエラーメッセージが表示されます。なにか提案を?Java MySQLの選択クエリ
public class Connector {
Connection con;
PreparedStatement stmt;
ResultSet rs;
Connector()
{
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost/luxmidatabase","root","");
stmt=con.prepareStatement("select * from login where username=? and password=?");
}
catch (Exception e)
{
System.out.println(e);
}
}
}
第二CLASS
public class AttendanceHistory extends Connector
{
public AttendanceHistory() {
initialize();
}
public JFrame frmAttendanceHistory;
Connector con;
private JTextField textField;
// initialise the frame
private void initialize() {
frmAttendanceHistory = new JFrame();
frmAttendanceHistory.setTitle("LEC AdminPro: Attendance History");
frmAttendanceHistory.setBounds(100, 100, 323, 149);
frmAttendanceHistory.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frmAttendanceHistory.setLocationRelativeTo(null);
// Initialising a Grey Border, which I am going to be using later to add borders to JLabels.
Border border = LineBorder.createGrayLineBorder();
frmAttendanceHistory.getContentPane().setLayout(null);
con = new Connector();
JPanel panel_1 = new JPanel();
panel_1.setBounds(0, 0, 307, 113);
frmAttendanceHistory.getContentPane().add(panel_1);
panel_1.setBorder(border);
panel_1.setLayout(null);
JLabel lblRegister = new JLabel("View Attendance History");
lblRegister.setFont(new Font("Tahoma", Font.BOLD, 12));
lblRegister.setBounds(10, 11, 193, 20);
panel_1.add(lblRegister);
JLabel lblStudentId = new JLabel("Student ID");
lblStudentId.setFont(new Font("Arial", Font.PLAIN, 11));
lblStudentId.setBounds(10, 45, 69, 14);
panel_1.add(lblStudentId);
// Created a Cancel button along with an OptionDialog which pops up to confirm whether user wants to cancel registration or not.
JButton btnNewButton = new JButton("Cancel");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Object[] options = {"Yes", "No"};
Component form = null;
int n = JOptionPane.showOptionDialog(form, "Would you like to cancel the progress?", "Exit Confirmation", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options);
if(n == JOptionPane.YES_OPTION) {
frmAttendanceHistory.setVisible(false);
}
}
});
btnNewButton.setBounds(159, 73, 75, 23);
panel_1.add(btnNewButton);
JButton button = new JButton("Submit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//String studentID = textField.getText();
try {
con.stmt.executeQuery("SELECT StudentID, date FROM attendance WHERE StudentID = 21457");
while (rs.next()) {
String date = rs.getString("date");
System.out.println(date);
}
JOptionPane.showMessageDialog(frmAttendanceHistory, "Attendance has been registered.");
frmAttendanceHistory.setVisible(false);
} catch (SQLException e) {
//System.out.println("Record couldn't be added!");
JOptionPane.showMessageDialog(frmAttendanceHistory, "Attendance couldn't be registered. Please try again!");
e.printStackTrace();
}
}
});
button.setBounds(81, 73, 75, 23);
panel_1.add(button);
textField = new JTextField();
textField.setBounds(81, 42, 212, 20);
panel_1.add(textField);
textField.setColumns(10);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AttendanceHistory window = new AttendanceHistory();
window.frmAttendanceHistory.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
// method to make this frame visible (may be used in other classes for retrieval)
public void setVisible(boolean b) {
frmAttendanceHistory.setVisible(true);
}
}
主な問題は、送信ボタン内のコードです。それは私がデータをフィルタリングしようとするところです。
これはエラーメッセージです:あなたは、エラーが発生した行がrs
がnull
あるのでNullPointerException
が起こる
while (rs.next()) {
であると言ったコメントで
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at AttendanceHistory$2.actionPerformed(AttendanceHistory.java:85)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
すべて一緒に:エラーメッセージは何ですか? –
@JacobM上記のエラーメッセージを表示しました。 –
何かが 'null'であってはならない' null'なので 'NullPointerException'が発生します。エラーメッセージを見てください。これは、どこに起こったのかを正確に伝えています:AttendanceHistory.java'の85行目。コードのその部分を見てください。 – Jesper