我在java中使用查询在postgresql DB中插入。
当我手动追加参数时,我正在使用的查询工作正常,但是当我通过预准备语句提供参数时,它给出的错误为:
错误:语法错误位于或接近“$ 1”
我使用以下代码:
String InsertInTi="INSERT INTO ssr_timeline_test("
+"ti_id, module_id, module_name, updated_date, tie_updates,"
+"additional_options, co_count, ca_type)"
+"(?,?,?,current_timestamp,?,?,?,?)";
pres = con.prepareStatement(InsertInTi);
pres.setInt(1,tId);
pres.setString(2,moduleId);
pres.setString(3,moduleName);
pres.setString(4,ti.toJSONString());
pres.setString(5,additionalOption.toJSONString());
pres.setInt(6,coCount);
pres.setString(7,caType);
System.out.println("Query : "+pres );
pres.execute();
有人可以提出相同的解决方案吗?
我还检查了传递给参数的值的类型。这些是:
TimInsert(int tId , String moduleId, String moduleName , JSONObject ti, JSONObject additionalOption , int coCount , String caType)
答案 0 :(得分:7)
你的插入缺少instantiateViewControllerWithIdentifier:
子句 - 因此错误。
将其更改为
VALUES
也许可以拨打 String InsertInTi="INSERT INTO ssr_timeline_test("
+"ti_id, module_id, module_name, updated_date, tie_updates,"
+"additional_options, co_count, ca_type) values " //added here
+"(?,?,?,current_timestamp,?,?,?,?)";
而不是executeUpdate()