title: insert query with varchar as data type for primary key
body: <p>The program is not accepting the query given below-</p>
  
  <pre><code> public class loginDaos {
  
         public void create(loginBean bean) {
             ConnectionPool c = ConnectionPool.getInstance();
             c.initialize();
             Connection con = c.getConnection();
             try {
                 String sql = "INSERT INTO login VALUES(?,?,?,?)";
                 PreparedStatement pstmt = con.prepareStatement(sql);
                 pstmt.setString(1, bean.getCode());
                 pstmt.setString(2, bean.getUserid());
                 pstmt.setString(3, bean.getPassword());
                 pstmt.setString(4, bean.getPosition());
                 pstmt.executeUpdate(sql);
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
  
  
     public static void main(String args[]) {
         loginDaos ld = new loginDaos();
         loginBean lb = new loginBean("representative", "rep7", "rep7", "r");
         ld.create(lb);
  
     }
     }
  </code></pre>
  
  <p>The table is:</p>
  
  <pre><code> CREATE TABLE login
  ( userid char(25);
    password varchar(45),
    code char(5),
    position char(),
    PRIMARY KEY (code)
   );
  </code></pre>
  
  <p>I have currently kept the value of userid,password, code and position as String.The stack trace is:</p>
  
  <pre><code> com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?,?,?)' at line 1
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
      at com.mysql.jdbc.Util.getInstance(Util.java:381)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
      at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
      at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564)
      at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485)
      at login.loginDaos.create(loginDaos.java:33)
      at login.loginDaos.main(loginDaos.java:42)
  </code></pre>
  
  <p>BUILD SUCCESSFUL (total time: 0 seconds)</p>
  
  <p>Help!</p>