我正在使用Java和MySQL,我必须从DB中选择这样的东西:
String sql = "SELECT type FROM test_case where input=" + inputTestCase;
问题是inputTestCase字符串有时会有换行符。 在这些情况下,我得到一个例外,例如:
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '5
8
10' at line 2
其中:
'5
8
10'
是我的inputTestCase
。
我应该怎样做才能让Select
发挥作用。谢谢大家的帮助!
P.S:我没有初始化inputTestCase
。该字符串的值来自DB。
答案 0 :(得分:5)
如果您正在使用JDBC,那么总是在查询中包含动态数据时使用PreparedStatement
。如果不这样做,则极易受到SQL Injection攻击,恶意用户可以在数据库上执行任意SQL命令。
作为奖励,使用PreparedStatement
将逃避您的输入,因此您不必担心在这种情况下对其进行消毒。
有关更多信息,请查看Java教程 - Using Prepared Statements。