0

I'm trying to insert some data captured by a gui form into my database. When I run the program, and try to add a vendor, I'm getting a nullpointerexception, and am having trouble figuring out why. Any guidance is greatly appreciated.

Java Method:

private void addVendorToDbButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                    

         addVendorPanel.setVisible(true);

         //ANDY:
         String vendorName = addVendorNameField.getText();
         String customerName = addCustomerNumField.getText();
         String vendorCode = addVendorCodeField1.getText();

     String sql = "INSERT INTO VENDORS (Vendor,Cust#,Vendorcode)"+"VALUES('"+vendorName+"','"+customerName+"','"+vendorCode+"')";
     try {
         openconnection();
         rs = statement.executeQuery(sql);
     } catch (SQLException ex) {
         Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
     }
}       

OpenConnection:

public void openconnection(){
     Connection conn = null;
        try {
      conn = DriverManager.getConnection("jdbc:mysql://sql3.freemysqlhosting.net:3306/sql376856", "xxxx","xxxxx");
      System.out.println("Connected database successfully...");
        } catch (Exception e) {
            System.out.println(e);
        }
    try {
        Statement statement = conn.createStatement();
    } catch (SQLException ex) {
        Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Declare Global Variables for Use:

public class gui extends javax.swing.JFrame {


 Statement statement;  
 Connection conn;
 ResultSet rs;
/**
 * Creates new form gui
 */
public gui() {
    initComponents();
}

Error Message:

run:
Connected database successfully...
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at database.gui.addVendorToDbButtonActionPerformed(gui.java:1142)
at database.gui.access$1300(gui.java:23)
at database.gui$14.actionPerformed(gui.java:562)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at        javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
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:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
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)
12
  • 1
    What is 1142nd line of gui.java? Commented May 12, 2015 at 4:47
  • rs = statement.executeQuery(sql); Commented May 12, 2015 at 4:47
  • have you created objects, for addVendorPanel, addVendorNameField, addCustomerNumField or addVendorCodeField or statement? ? Commented May 12, 2015 at 4:48
  • Did you check whether statement is null? Commented May 12, 2015 at 4:49
  • Statement and connection is not instantiated in your local method Commented May 12, 2015 at 4:52

2 Answers 2

1

I think your statement variable in the method addVendorToDbButtonActionPerformed is null and hence the nullpointer exception.

Sign up to request clarification or add additional context in comments.

Comments

0
public void openconnection(){
        try {
      conn = DriverManager.getConnection("jdbc:mysql://sql3.freemysqlhosting.net:3306/sql376856", "xxxx","xxxxx");
      System.out.println("Connected database successfully...");
        } catch (Exception e) {
            System.out.println(e);
        }
    try {
        statement = conn.createStatement();
    } catch (SQLException ex) {
        Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
    }
}

if you go this route. make sure you make another method to close your connection.

I'd also recommend moving statement = conn.createStatement(); to the method where you defined your query. Make sure you close the statement and result set in that method after retrieving your results.

5 Comments

Is there another way to create a connection the entire time the program is running? Instead of just on button click
@user2977729 Cache the result of the connection, so when you ask for the connection again, return the one you have already opened (by checking to see if the value is null or not)
Look up "JDBC Connection Pooling"
@shinjw I tried changing the return type of openconnection() to statement, and changing it to statement = openconnection(); in the method. Getting the same error.... should I handle this a different way?
post your new method. are you returning conn.createStatement() in that method?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.