【发布时间】:2018-07-21 04:20:34
【问题描述】:
我正在尝试使用 INSERT 语句将数据从 Spring 应用程序前端的表单添加到 PostgreSQL 表。该表单主要包括文本值,但我还包括HH:MM 格式的时间输入要求。在旁注中,我还要求以DD/MM/YYYY 的形式提供日期,并且表格中的文本可以包括逗号、句点和撇号。根据输入表单的数据(例如姓名、传记、地址等),我收到以下错误,指向数据的不同位置。
org.postgresql.util.PSQLException: ERROR: syntax error at or near "blank"
Position: x
因此,我无法确定问题的确切根源,但我对此类错误的任何经验都存在某种描述符号的问题。
我使用executeUpdate 在 java 类中创建插入语句,如下所示:
int rs = stmt.executeUpdate( "INSERT INTO events VALUES
(nextval('reviews_id_seq'::regclass), '" + eventname +" '," +description+","
+address+", '"+starttime+"', '"+endtime+"',
'"+username+"','"+attendees+"');");
有什么想法吗?
【问题讨论】:
-
(1) 使用占位符不是更好更安全吗? SQL注入是真实存在的。 (2) 你最好指定你的列:
insert into events (eventname, description, ...) values (...)。 (3) 如果您指定了列名,那么您不必担心手动将id设置为下一个序列值,列的default应该会处理这个问题。
标签: java postgresql spring-boot