gpt4 book ai didi

java - 运行 INSERT 语句时发生 SQLSyntaxError Java

转载 作者:行者123 更新时间:2023-12-02 11:47:47 25 4
gpt4 key购买 nike

CREATE TABLE "INVOICE" (
"INVOICENO" VARCHAR(200) NOT NULL PRIMARY KEY,
"DATE" DATE,
"COMPANY" VARCHAR(500),
"PRICE" DOUBLE,
"TYPE" VARCHAR(200),
"INVOICETYPE" VARCHAR(200),
"GENERATEDDOCID" INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)


);

这是我的数据库表代码,当我想使用 INSERT INTO () VALUES (?,?,?) 在表中输入值时,它给出 SQLSyntax 错误。

我使用下面的代码插入值:

      public void addData(addData addData) {
private String sqlInsertStr = "INSERT INTO
NBUSER.INVOICE(INVOICENO,DATE,COMPANY,PRICE,TYPE,INVOICETYPE) VALUES(?,?,?,?,?,?);";
try {

stmt = conn.prepareStatement(sqlInsertStr);

stmt.setString(1, addData.getInvoiceNo());
stmt.setString(2, addData.getDate());
stmt.setString(3, addData.getCompany());
stmt.setDouble(4, addData.getPrice());
stmt.setString(5, addData.getType());
stmt.setString(6, addData.getInvoiceType());
stmt = conn.prepareStatement(sqlInsertStr);
stmt.executeUpdate();
} catch (SQLException ex) {
ex.getMessage();
}
}

最佳答案

可能的错误来源很少(基于代码审查):

  1. 查询不应以分号终止。目前,代码中的 sql 查询由双引号内的分号终止。

    private String sqlInsertStr = "INSERT INTO NBUSER.INVOICE
    (INVOICENO,DATE,COMPANY,PRICE,TYPE,INVOICETYPE)
    VALUES(?,?,?,?,?,?)"; // removed semi-colon at the end of query.
  2. 您不应在表中声明具有标准数据类型(如 DATE)名称的列。您应该在声明表时将其重命名为 INVOICEDATE 等。

  3. 您的第二个参数需要一个日期类型的参数,而您正在向查询提供一个字符串值。这将完全导致异常。

    stmt.setDate(2, new java.sql.Date(addData.getDate());// changed the type.

关于java - 运行 INSERT 语句时发生 SQLSyntaxError Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com