背景: - 我试图运行更新查询,只要它符合某些条件即将布尔值从0更改为1,即行匹配车辆的注册号,并且任务设置为打开即布尔值这是为了能够在完成后关闭数据库中的任务
我正在调用来自" Ambulance_GUI" " TaskQuery"中的类class和此查询在SQL中正常工作。我还得到了一个"弗兰肯斯坦" Java pragram中的方法,但编译器说的是无法编译的代码,即使它正在工作,因此我正在重写它。
然而,现在我收到一个NullPointerException错误并且无法看到我做错了什么,也许是因为我已经盯着它看了太久但我无法让它们正常工作!如果它有些愚蠢,我会道歉但是任何帮助都会很棒!
这是方法调用:
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
TaskQueryClass NTQ2 = new TaskQueryClass(this.vehicleReg);
NTQ2.updateTaskStatus1();
这是TaskQuery类中的方法:
public void updateTaskStatus1() //throws SQLException
{
try {
DatabaseConnection db = new DatabaseConnection();
stmt = conn.createStatement();
String newQuery= "UPDATE Task\n" +
"SET TaskClosed='1', TaskClosedDate=CONVERT (date, SYSDATETIME())\n" +
"FROM Vehicle AS V\n" +
"JOIN Task AS T\n" +
"ON V.TaskID = T.Task_ID\n" +
"WHERE TaskClosed = '0'\n" +
"AND V.VehicleRegistrationNumber = '"+this.vehicleID+"'";
int rows = stmt.executeUpdate(newQuery);
System.out.println(rows + " Row is Updated Successfully. ");
}
catch (SQLException e) {
System.out.println(e.toString());
} finally {
//closing connection
//conn.close();
//stmt.close();
}
}
堆栈跟踪如下:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ambulance.project.TaskQueryClass.updateTaskStatus1(TaskQueryClass.java:130)
at ambulance.project.Ambulance_GUI.jButton4ActionPerformed(Ambulance_GUI.java:380)
at ambulance.project.Ambulance_GUI.access$200(Ambulance_GUI.java:19)
at ambulance.project.Ambulance_GUI$3.actionPerformed(Ambulance_GUI.java:110)
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.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
首先抱怨方法中的stmt = conn.createStatement();
行,然后突出显示的下一行是NTQ2.updateTaskStatus1();
方法调用。接下来它抱怨Ambulance_GUI构造函数行本身,然后它进入JFrame的生成代码。
连接初始化为:
public class TaskQueryClass {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;
Statement stmt = null;
private final String vehicleID