Java JDBC Derby语法错误

时间:2017-12-16 18:32:06

标签: java sql

您好我的java代码中的语法有问题。我有一个tableview从SQL数据库中获取数据。我在数据库bookcustomerorder中创建了3个表。当我点击一个按钮时,我想要选择书籍并将它们添加到order表格中 这是主程序的代码(从db调用方法):

if(table.getSelectionModel().getSelectedItems().iterator().hasNext()) { 
                    db.insertOrder(new Bestellung(customerid,table.getSelectionModel().getSelectedItems().iterator().next())); 

book已修复。只有另外两个表customerorder是动态的。

问题:

我在order表格中创建了这样的值

String ct = "CREATE TABLE Order (" + "Order_Id integer generated always as identity, " + "CUSTOMER_ID BIGINT" + "ISBN, CHAR(13) " + "PRIMARY KEY(Order_Id))";

依旧......

我像这样插入order表。 (这是String i中的语法问题,这是编译器说它不起作用的位置..)

    String i = "INSERT INTO ORDER(CUSTOMER_ID,ISBN), VALUES(?,?)";
    Connection conn = null; 
    PreparedStatement stmt = null; 
    try {
        conn = DriverManager.getConnection(connString);
        stmt = conn.prepareStatement(i);
        conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
        stmt.setLong(1, order.getCustomerId());
        stmt.setString(2, order.getBuch().getISBN());
        stmt.executeUpdate();  
    } catch (SQLException e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
    finally {

        try {
            if (stmt != null)
                stmt.close();
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

这是我得到的语法错误

  

语法错误:遇到" ORDER"在第1栏第13栏。

那么如何更正string i中的语法?有没有人有任何想法?

2 个答案:

答案 0 :(得分:1)

INSERT INTO ORDER(CUSTOMER_ID,ISBN), VALUES(?,?)
                                   ^

逗号是多余的。另外,在CREATE TABLE

... + "ISBN, CHAR(13) " + ...
           ^

这个逗号也是无关紧要的。

答案 1 :(得分:0)

如果您想使用保留字/关键字作为表名,您应该:

  1. MySQL:使用' ,例如:select * from 'Order'
  2. Oracle,PostgreSQL:使用" ,例如:select * from "Order"
  3. 这是不好的做法,请尝试更改您的表名。

    你有另一个由@Jim Garrison回答的错误。