【问题标题】:Using a prepared statement with auto increment field使用带有自动增量字段的准备好的语句
【发布时间】:2014-07-16 20:33:43
【问题描述】:

我正在尝试使用准备好的语句插入主键设置为自动递增的表。

表格中的字段如下;

id、用户名、密码、电子邮件、名字、姓氏

我的代码是这样的

    String sql = "INSERT INTO Users values (?,?,?,?,?, ?)";
    RegistrationStatus status = null;
    Connection conn = null;
    PreparedStatement st = null;
    try {
        conn = source.getConnection();
        st = conn.prepareStatement(sql);
        st.setString(2, username);
        st.setString(3, password);
        st.setString(4, email);
        st.setString(5, firstname);
        st.setString(6, lastname);
        st.executeUpdate();

我在哪里读到我们不应该包含第一项,因为数据库会处理它。对我来说,这种方法似乎失败了。

能否就如何解决这个问题获得一些帮助?

【问题讨论】:

  • 不包含 ?对于 PK id 参数。您的插入 sql 中应该只有 5 个问号。
  • @NathanHughes 您还应该指定 ID 列也不会在 SQL 插入语句中设置。

标签: java sql prepared-statement


【解决方案1】:

将您的语句更改为不包括 id(或确切名称)列:

String sql = "INSERT INTO Users (username, password, email, firstname, lastname)"
    + " values (?,?,?,?,?)";
//...
st.setString(1, username);
st.setString(2, password);
st.setString(3, email);
st.setString(4, firstname);
st.setString(5, lastname);
//...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2023-03-26
    • 2014-10-19
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多