java - 插入数据库时​​出错 : ERROR: syntax error at or near "$1"

标签 java postgresql jdbc prepared-statement java-6

我在 java 中使用查询来插入 postgresql 数据库。

当我手动附加参数时,我正在使用的查询工作正常,但是当我通过准备好的语句提供参数时,它给出的错误如下:

错误:“$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)

最佳答案

您的插入缺少 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() 而不是 execute()

关于java - 插入数据库时​​出错 : ERROR: syntax error at or near "$1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35199999/

相关文章:

sql - 从准备好的语句中检索值并在 Go 中选择查询

java - Pentaho Kettle + Neo4j jdbc 驱动程序错误 : Unsupported major. 次要版本 51.0

mysql - Tomcat 7 和 Idea ide 的 JDBC 问题

mysql - 在 Ja-sig CAS 中使用 MySQL 数据库进行身份验证

java - 如何设置和管理 JOptionPane 的布局

java - 数据库中的用户名未显示在网页中?

postgresql - 如何在gorm many2many关联中仅获取ID列表

java - 同步方法调用 Java

java - Mongo Java 驱动程序 - 如何将子文档更新为数组元素

postgresql - 旧记录未在更新语句中分配