在Java中逃避撇号

jku*_*ner 2 java mysql escaping

我仍然是Java的新手,并试图将数据插入数据库.我插入一个包含's的字符串时出错,所以我的最终结果是逃避撇号.我怎么能完成?

jqa*_*jqa 13

使用预备陈述.除了处理任何特殊字符外,它们还更强大,有助于防止SQL注入攻击.

  • ......只问Little Bobby Tables.:) (3认同)

Yis*_*hai 6

问题实际上不是Java,而是底层数据库.您最有可能将参数串在一起,如下所示:

  String sql = "select * from sometable where somefield = " + someObject.getSomeField();
Run Code Online (Sandbox Code Playgroud)

不要那样做.请改用PreparedStatement.

如果这是一个必须关注此类事情的应用程序,那么它具有防止SQL注入攻击的额外优势.


RHS*_*ger 5

使用StringEscapeUtils:

StringEscapeUtils.escapeSql(yourstring);
Run Code Online (Sandbox Code Playgroud)

警告:从Commons Lang 3.0开始:

StringEscapeUtils.escapeSql

这是一种误导性的方法,只处理最简单的SQL案例.由于SQL不是Lang的重点,因此维护此方法没有意义.