选择* from table where =" string with linebreaks"

时间:2014-04-04 00:07:25

标签: java string select

我正在使用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。

1 个答案:

答案 0 :(得分:5)

如果您正在使用JDBC,那么总是在查询中包含动态数据时使用PreparedStatement。如果不这样做,则极易受到SQL Injection攻击,恶意用户可以在数据库上执行任意SQL命令。

作为奖励,使用PreparedStatement将逃避您的输入,因此您不必担心在这种情况下对其进行消毒。

有关更多信息,请查看Java教程 - Using Prepared Statements