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

Java连接Oracle Thin数据库Insert语句语法错误排查求助

问题定位与修复:Oracle插入语句语法错误

你的代码核心问题是SQL字段列表中Gender和Address1之间缺少逗号,拼接后的SQL会把这两个字段连写成GenderAddress1,直接导致Oracle抛出无效语法异常。

错误的SQL拼接片段:

+ "FirstName, LastName, Salutation, DateOfBirth, Gender"
+ "Address1, Address2, Address3, City, State, PostalCode)"

修正后的SQL语句:

String sql = "INSERT INTO Person("
        + "FirstName, LastName, Salutation, DateOfBirth, Gender, "
        + "Address1, Address2, Address3, City, State, PostalCode)"
        + " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

额外优化建议:

  • 使用try-with-resources自动关闭数据库资源,避免连接泄漏:
try (Connection conn = ConnectionFactory.getConnection();
     PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setString(1, person.getFirstName());
    stmt.setString(2, person.getLastName());
    stmt.setString(3, person.getSalutation());
    stmt.setDate(4, person.getDateOfBirth());
    stmt.setString(5, person.getGender());
    stmt.setString(6, person.getAddress1());
    stmt.setString(7, person.getAddress2());
    stmt.setString(8, person.getAddress3());
    stmt.setString(9, person.getCity());
    stmt.setString(10, person.getState());
    stmt.setString(11, person.getPostalCode());
    stmt.executeUpdate();
    return true;
} catch (SQLException e) {
    e.printStackTrace();
    return false;
}
  • Java 13+可使用文本块编写SQL,可读性更强,减少拼接错误:
String sql = """
        INSERT INTO Person(
            FirstName, LastName, Salutation, DateOfBirth, Gender,
            Address1, Address2, Address3, City, State, PostalCode
        ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        """;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:07:43