title: Inserting data into a Access Database
body: <p>I am having trouble with a exercise I am working on with Java using a Access Database, wondering if anyone could shed some light on this</p>
  
  <p>In my main class I make a call like this</p>
  
  <pre><code>Product p = new Product("test", "Test Product", 49.50);
  insertProduct(p);
  </code></pre>
  
  <p>This calls the insertProduct(p); method. What I am trying to do is insert some test data into the database, here is my code for that.</p>
  
  <pre><code>public static void insertProduct(Product p)
  {
      try
      {
          System.out.println("Insert test: ");
  
          String insertProduct = "INSERT INTO Products (ProductCode, Description, Price) VALUES ('andr', 'Beginning Android', '38.99')";
          PreparedStatement ps = connection.prepareStatement(insertProduct);
          ps.setString(1, p.getCode());
          ps.setString(2, p.getDescription());
          ps.setDouble(3, p.getPrice());
          ps.executeUpdate();
  
          ResultSet rs = ps.executeQuery();
  
          rs.next();
          String productCode = rs.getString(1);
          String description = rs.getString(2);
          double price = rs.getDouble(3);
  
          p = new Product(productCode, description, price);
  
  
          printProduct(p);
          System.out.println();
  
      }
      catch(SQLException e)
      {
          e.printStackTrace();
      }
  }
  </code></pre>
  
  <p>when I run this I get a </p>
  
  <blockquote>
    <p>Exception in thread "main" java.lang.NullPointerException</p>
  </blockquote>
  
  <p>and can't figure out what is going on, I know that when I run the debugger and step through the method, it crashes at the beginning of this statements </p>
  
  <pre><code>ps.setString(1, p.getCode());
  ps.setString(2, p.getDescription());
  ps.setDouble(3, p.getPrice());
  ps.executeUpdate();
  </code></pre>
  
  <p>here is the results of the stack trace</p>
  
  <pre><code>at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1023)
  at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3057)
  at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:766)
  at DBTesterApp.insertProduct(DBTesterApp.java:165)
  at DBTesterApp.main(DBTesterApp.java:21)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
  </code></pre>