运行INSERT语句时的SQLSyntaxError Java

问题描述 投票:0回答:1
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();
    }
}
java sql jdbc derby
1个回答
1
投票

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

  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. 您的第二个参数需要Date类型的参数,而您正在为查询提供字符串值。这将完全导致异常。 stmt.setDate(2, new java.sql.Date(addData.getDate());// changed the type.
© www.soinside.com 2019 - 2024. All rights reserved.