2013-08-31 30 views
0
String sql = "INSERT INTO user (userid, username, password, lastname, firstname, " 
      + "middlename, birthdate, gender, address, email, contact, " 
      + "marital_status, religion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"; 
    try { 
     pst = conn.prepareStatement(sql); 

     pst.setString(1, username); 
     pst.setString(2, password.toString()); //chartype 
     pst.setString(3, lastName); 
     pst.setString(4, firstName); 
     pst.setString(5, middleName); 
     pst.setString(6, birthdate); 
     pst.setString(7, gender1); 
     pst.setString(8, address1); 
     pst.setString(9, email1); 
     pst.setLong(10, mobile); 
     pst.setString(11, status1); 
     pst.setString(12, religion1); 
     pst.execute(); 
    }catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 

我有13列,userid是自动增量。但我不知道你怎么做不需要放置用户ID。如何在java中的数据库中插入值

我得到这个错误。我想要自动增量ID。所以没有必要输入正确的?

Column count doesn't match value count at row 1 
+0

您可以删除该字段,因为它是auto_increment列或传递NULL值。例如'VALUES(NULL,?,?,.....' –

+0

发送'NULL'或删除'userid'列。我还建议您使用['INSERT INTO ... SET'](http: //milov.nl/2836)语法来提高可读性 –

+0

避免插入命令中的user_id或只传递null null –

回答

0

无法插入值,自动递增列,所以只是从查询中删除它:

insert into user(userName, password,...) values (and your values here) 
+0

因此我要将主键用作用户名? – JeraldPunx

+0

@JeraldPunx nope,您的'userid'将按您指定的数据库自动递增。 –

+0

您知道吗?为我的密码插入char []因为当我使用'password.toString()'我的本地主机上的密码/ phpadmin是不同的... – JeraldPunx

1

如果您不打算为其提供值,请从列列表中删除“用户标识”。

I.e. INSERT INTO user (username, password, ...)

1

您在INSERT中指定了13列,但在VALUES子句中只有12个占位符。列数和值必须匹配。要么您需要从INSERT中删除userid列,要么需要添加一个额外的占位符(或字面值)来设置其值。