我正在创建一个非常简单的Java应用程序,它接受来自用户的结果,然后将数据发送到MySql服务器。它工作正常,但后来我为数据库部分创建了一个名为DataBaseHelper的新类。 从那时起它就不再起作用了。它显示NullPointerException 请帮忙
这是我的主要班级:
Vehicle.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package vehicles;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.jws.Oneway;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
/**
*
* @author Akshay Sood
*/
public class Vehicles extends JFrame{
public static JLabel manfName,cost,modelNo,year,color;
public static JTextField colorTXT,costTXT,yearTXT,modelNoTXT,manfNameTXT;
public static JButton submit,reset;
static String Manufacturer,ModelNo,Year,Color,Cost;
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/VEHICLE";
static final String USER = "root";
static final String PASS = "8851";
Context context = (Context) Vehicles.this;
public static void main(String[] args) throws ClassNotFoundException, SQLException {
init();
JFrame jFrame = new JFrame();
jFrame.setTitle("Vehicle Registration");
jFrame.setSize(800, 1600);
jFrame.setLayout(null);
jFrame.show();
jFrame.add(manfName);
jFrame.add(modelNo);
jFrame.add(year);
jFrame.add(color);
jFrame.add(cost);
jFrame.add(manfNameTXT);
jFrame.add(modelNoTXT);
jFrame.add(yearTXT);
jFrame.add(colorTXT);
jFrame.add(costTXT);
jFrame.add(submit);
jFrame.add(reset);
}
private static void init() {
manfName = new JLabel();
manfName.setText("Manufacturer: ");
manfName.setBounds(10, 10, 150, 10);
modelNo = new JLabel();
year = new JLabel();
color = new JLabel();
cost = new JLabel();
modelNo.setText("Model No :");
year.setText("Year of Purchase:");
color.setText("Color:");
cost.setText("Cost:");
modelNo.setBounds(10, 40, 150, 10);
year.setBounds(10, 70, 150, 10);
color.setBounds(10, 100, 150, 10);
cost.setBounds(10, 130, 150, 10);
manfNameTXT = new JTextField();
modelNoTXT = new JTextField();
yearTXT = new JTextField();
colorTXT = new JTextField();
costTXT = new JTextField();
manfNameTXT.setBounds(300, 10, 150, 20);
modelNoTXT.setBounds(300, 40, 150, 20);
yearTXT.setBounds(300, 70, 150, 20);
colorTXT.setBounds(300, 100, 150, 20);
costTXT.setBounds(300, 130, 150, 20);
submit = new JButton();
reset = new JButton();
submit.setText("Submit");
reset.setText("Reset");
submit.setBounds(100, 200, 100, 20);
reset.setBounds(200, 200, 100, 20);
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Manufacturer = manfNameTXT.getText().toString();
ModelNo = modelNoTXT.getText().toString();
Year= yearTXT.getText().toString();
Color= colorTXT.getText().toString();
Cost= costTXT.getText().toString();
DatabaseHelper databaseHelper = new DatabaseHelper();
databaseHelper.setManufacturer(Manufacturer);
databaseHelper.setColor(Color);
databaseHelper.setCost(Cost);
databaseHelper.setModelNo(ModelNo);
databaseHelper.setYear(Year);
int result = 0;
System.out.print("Inserting Record");
result = databaseHelper.InsertData();
if(result == 1)
{
System.out.print("Record Added!!");
}
}
});
}
}
DatabaseHelper.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package vehicles;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
/**
*
* @author Akshay Sood
*/
public class DatabaseHelper {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/VEHICLE";
Connection conn = null;
Statement statement = null;
public void DatabaseHelper()
{
System.out.println("In DatabaseHelper Constructor");
try {
Class.forName(JDBC_DRIVER);
conn= DriverManager.getConnection(DB_URL, "root", "8851");
statement = conn.createStatement();
System.out.println("Connection Created");
} catch (SQLException ex) {
Logger.getLogger(DatabaseHelper.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Something went wrong");
} catch (ClassNotFoundException ex) {
Logger.getLogger(DatabaseHelper.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String Manufacturer = "";
private String ModelNo = "";
private String Year = "";
private String Color = "";
private String Cost = "";
public String getManufacturer() {
return Manufacturer;
}
public void setManufacturer(String Manufacturer) {
this.Manufacturer = Manufacturer;
}
public String getModelNo() {
return ModelNo;
}
public void setModelNo(String ModelNo) {
this.ModelNo = ModelNo;
}
public String getYear() {
return Year;
}
public void setYear(String Year) {
this.Year = Year;
}
public String getColor() {
return Color;
}
public void setColor(String Color) {
this.Color = Color;
}
public String getCost() {
return Cost;
}
public void setCost(String Cost) {
this.Cost = Cost;
}
public int InsertData()
{
int rs = 0;
System.out.println("In InsertData");
try {
rs = statement.executeUpdate("insert into vehicle values(" + getManufacturer() + ", " + getModelNo()
+ " ," + getYear() + " ," + getColor() + " ," + getCost() + ")");
} catch (SQLException ex) {
Logger.getLogger(DatabaseHelper.class.getName()).log(Level.SEVERE, null, ex);
}
return rs;
}
}
日志:
run:
Inserting RecordIn InsertData
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at vehicles.DatabaseHelper.InsertData(DatabaseHelper.java:93)
at vehicles.Vehicles$1.actionPerformed(Vehicles.java:122)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
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:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
答案 0 :(得分:2)
删除void
关键字,这样您就可以使用所有初始化代码执行自定义构造函数
public DatabaseHelper()