插入Record时出现JDBC nullPointerException

时间:2015-10-17 18:46:59

标签: java mysql jdbc

我正在创建一个非常简单的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)

1 个答案:

答案 0 :(得分:2)

删除void关键字,这样您就可以使用所有初始化代码执行自定义构造函数

public DatabaseHelper()