您好我的java代码中的语法有问题。我有一个tableview
从SQL数据库中获取数据。我在数据库book
,customer
,order
中创建了3个表。当我点击一个按钮时,我想要选择书籍并将它们添加到order
表格中
这是主程序的代码(从db调用方法):
if(table.getSelectionModel().getSelectedItems().iterator().hasNext()) {
db.insertOrder(new Bestellung(customerid,table.getSelectionModel().getSelectedItems().iterator().next()));
表book
已修复。只有另外两个表customer
,order
是动态的。
问题:
我在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
中的语法?有没有人有任何想法?
答案 0 :(得分:1)
INSERT INTO ORDER(CUSTOMER_ID,ISBN), VALUES(?,?)
^
逗号是多余的。另外,在CREATE TABLE
... + "ISBN, CHAR(13) " + ...
^
这个逗号也是无关紧要的。
答案 1 :(得分:0)
如果您想使用保留字/关键字作为表名,您应该:
select * from 'Order'
select * from "Order"
但这是不好的做法,请尝试更改您的表名。
你有另一个由@Jim Garrison回答的错误。