SQL 查询在 workbench 中有效,但在 java 中给出语法错误
SQL Query works in workbench but gives syntax error in java
I 运行 sql Workbench 和 java:
中的 executeUpdate() 方法中的查询
在Workbench中:
INSERT INTO recentsearches (name) VALUES ("blah");
在java中:
statement.executeUpdate("INSERT INTO recentsearches (name) VALUES (\""+name+"\""));
假设姓名 = "blah"。但是我从 运行 java 中的查询中得到一个语法错误,我已经检查了名称的字符串值。它肯定会出现 "blah",而且我没有忘记字符串值周围的语音标记,但我仍然遇到语法错误。
我在控制台中得到的错误是:
check the manual that corresponds to your MySQL server version for the
right syntax to use near '' at line 1
尝试使用:
"INSERT INTO recentsearches (name) VALUES("+name+")";
我的建议是使用 PreparedStatement,因为它有:
-SQL 语句的预编译和数据库端缓存导致整体执行速度更快,并且能够批量重用相同的 SQL 语句。
-通过内置转义引号和其他特殊字符自动防止 SQL 注入攻击。请注意,这需要您使用任何 PreparedStatement setXxx() 方法来设置值
I 运行 sql Workbench 和 java:
中的 executeUpdate() 方法中的查询在Workbench中:
INSERT INTO recentsearches (name) VALUES ("blah");
在java中:
statement.executeUpdate("INSERT INTO recentsearches (name) VALUES (\""+name+"\""));
假设姓名 = "blah"。但是我从 运行 java 中的查询中得到一个语法错误,我已经检查了名称的字符串值。它肯定会出现 "blah",而且我没有忘记字符串值周围的语音标记,但我仍然遇到语法错误。
我在控制台中得到的错误是:
check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
尝试使用:
"INSERT INTO recentsearches (name) VALUES("+name+")";
我的建议是使用 PreparedStatement,因为它有:
-SQL 语句的预编译和数据库端缓存导致整体执行速度更快,并且能够批量重用相同的 SQL 语句。
-通过内置转义引号和其他特殊字符自动防止 SQL 注入攻击。请注意,这需要您使用任何 PreparedStatement setXxx() 方法来设置值