如何在java中向数据库中插入值

如何在java中向数据库中插入值,java,sql,database,jdbc,insert,Java,Sql,Database,Jdbc,Insert,我有13列,userid是autoincrement。但是我不知道怎么做,你不需要输入用户id 我犯了这个错误。我想要自动递增ID,所以不需要输入对吗 String sql = "INSERT INTO user (userid, username, password, lastname, firstname, " + "middlename, birthdate, gender, address, email, contact, " + "mar

我有13列,userid是autoincrement。但是我不知道怎么做,你不需要输入用户id

我犯了这个错误。我想要自动递增ID,所以不需要输入对吗

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);
    }
如果不打算向列列表提供值,请从列列表中删除“userid”


例如,
插入到用户(用户名、密码等)

您不能将值插入到AutoInc列,所以只需将其从查询中删除即可:

Column count doesn't match value count at row 1

你的数据库是MySQL吗?如果是,您可以参考这篇关于向自动递增列插入值的文章。
您在
插入中指定了13列,但在
子句中仅指定了12个占位符。列数和值数必须匹配。您需要从
INSERT
中删除
userid
列,或者需要添加额外的占位符(或文字值)来设置其值。

您可以删除该字段,因为它是自动递增列,或者只传递
NULL
值。例如,
值(NULL、、?、…
发送
NULL
或删除
userid
列。我还建议您使用语法来提高可读性。避免在insert命令中使用userid,或者只传递
NULL
。插入代码中有13列名称,但sql代码中有12个值。删除userid列insert code或添加nu在值代码上的所有问号前面加上ll值。所以我要将主键设为用户名?@JeraldPunx不,您的
userid
将按您指定的DB自动递增。您知道如何为我的密码插入char[]吗?因为当我使用
password.toString()时
我的本地主机/phpadmin上的密码不同…实际上以纯文本形式存储密码是个坏主意。所以你只需要存储一个散列(例如sha1)不,我不需要…这只是一个学校项目…不适合公司…你知道如何插入字符吗?
insert into user(userName, password,...) values (and your values here)