You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC插入含自增主键的表时出现SQLException问题求助

问题解决:自增主键插入报错

错误原因分析

  1. SQL字段列表写法错误:你在insert语句的字段列表里写了null,这是错误用法。自增主键id无需手动指定,数据库会自动生成,字段列表只需包含要插入的name、amt、expire三个字段即可。
  2. 参数索引不匹配:原SQL写了4个?,但你只设置了第2、3、4位的参数,第1位未赋值,触发No value specified for parameter 1异常;改成3个?时,因原字段列表含错误的null(等效4个字段),又会出现参数数量不匹配的越界错误。

修正后的代码

int insertItems(String name, double amt, String exp) throws Exception {
    Connection con = getConnection();
    // 修正SQL:仅保留需要插入的字段,values对应3个占位符
    PreparedStatement ps = con.prepareStatement("insert into itemsList (name, amt, expire) values (?, ?, ?);");
    
    // 参数从第1位开始对应占位符
    ps.setString(1, name);
    ps.setDouble(2, amt);
    ps.setString(3, exp);
    
    int n = ps.executeUpdate();
    // 关闭资源,避免泄漏
    ps.close();
    con.close();
    
    return n;
}

关键说明

  • 自增主键字段不需要出现在insert语句的字段列表中,数据库会自动生成递增数值。
  • PreparedStatement的参数索引从1开始,必须和SQL中?的位置一一对应。
  • 务必添加资源关闭逻辑(或使用try-with-resources语法),防止数据库连接资源泄漏。

内容的提问来源于stack exchange,提问作者user17282548

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:15:39