我尝试将数据插入到名为newdevice的数据库表名中。 我的疑问是:
String query= uni +"," + nam +","+ temp + "," + vendor + "," + invoice +","+ dop +"," + cost ;
res=stm.executeQuery("INSERT INTO newdevice " + "(uniqueid , device , device_status , vendor_name , invoice , dop , cost)" + " VALUES(" + query +")");
但是在我这样做时我遇到了这个错误:
org.firebirdsql.jdbc.FBSQLException:GDS异常。 335544569.动态SQL错误 SQL错误代码= -104 令牌未知 - 第1行,第106列
(,)以逗号显示错误。
答案 0 :(得分:2)
问题是您可能缺少字符串值等引号,但是您根本不应该连接这样的值。它让你对SQL注入开放。相反,你应该使用PreparedStatement
参数,如下所示:
try (PreparedStatement pstmt = connection.prepareStatement(
"INSERT INTO newdevice (uniqueid, device, device_status, vendor_name, invoice, dop, cost) VALUES(?, ?, ?, ?, ?, ?, ?)"
pstmt.setInt(1, uni);
pstmt.setString(2, nam);
pstmt.setInt(3, temp);
pstmt.setString(4, vendor);
pstmt.setInt(5, invoice);
pstmt.setInt(6, dop);
pstmt.setBigDecimal(7, cost);
pstmt.executeUpdate();
}
请注意,我已经对setXXX
的实际数据类型进行了随机猜测。
答案 1 :(得分:0)
引号有问题。
我想语句(uniqueid , device , device_status , vendor_name , invoice , dop , cost)
不应该是双引号。你可以尝试删除这个双引号。