1

While creating a connection to Access and trying to insert simple data I get the following error:

 run:
 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javaapplication1.Authenticate.insertdata(Authenticate.java:49)
at javaapplication1.vendor.actionPerformed(vendor.java:74)
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:3321)
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:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
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:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
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)

Here's the code snippet if anyone can help a little and look into this. The code code compiles fine but gives an error at runtime:

package javaapplication1;
import java.sql.*;

public class Authenticate {

    final String fileName = "C:/Users/darksword/Desktopdb.accdb";
    Connection con = null;

    Authenticate()
    {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+fileName;
            con = DriverManager.getConnection(url,"","");
        }
        catch (Exception e)
            {

            }
        finally
            {
                try { if(con!=null) {con.close();} } catch (Exception e) {}
            }
    }

    void insertdata(String Name,String Address,String ContactNumber,int y) throws SQLException
    {
        String str = Integer.toString(y);
        //Statement st=con.createStatement();
        PreparedStatement pstmt = (PreparedStatement) con.prepareStatement("insert into product(id,VName,VAddress,VContactNumber) values(?,?,?,?)");
        pstmt.setString(1, str);
        pstmt.setString(1, Name);
        pstmt.setString(1, Address);
        pstmt.setString(1, ContactNumber);
        pstmt.executeUpdate();
        pstmt.close();
    }
}
8
  • Do you think it's well formatted code ? Commented Nov 29, 2013 at 15:43
  • Are you calling the Authenticate() method anywhere which is initiating your con object ? Commented Nov 29, 2013 at 15:46
  • well i cannot format the errors but i guess code itself is formatted and its a short code and @sanket i am just calling it Authenticate x; x = new Authenticate(); x.insertdata(Name.getText(),Address.getText(),ContactNumber.getText(),y); Commented Nov 29, 2013 at 15:48
  • You seem to be closing your con object in Authenticate(). Check the finally block. Just do a System.out.println(con) in insertdata before you access the con object. Seems like its null / closed. Commented Nov 29, 2013 at 15:50
  • yes the connection is null i commented the finally block but its still null Commented Nov 29, 2013 at 15:53

1 Answer 1

1

You're silently catching an exception when establishing the database connection which leaves con as null should an exception occur. Add

e.printStackTrace();

to the exception block.

In addition, you close your Connection immediately after assigning the variable in the constructor

con.close();
Sign up to request clarification or add additional context in comments.

Comments

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.