Dav*_*e G 41
您可以使用commons-lang实用程序,也可以使用regexp来处理它.
如果你正在构建动态SQL,我建议尝试使用一个准备好的语句,这将消除转义单引号的需要.
仅使用使用字符串连接构建的动态SQL:
String value = "one's self";
StringBuilder query= new StringBuilder();
query.append("insert into tname(foo) values (").append(value).append(")");
... execute call with query.toString() ...
Run Code Online (Sandbox Code Playgroud)
改为
String value = "one's self";
value= DatabaseUtils.sqlEscapeString(value);
StringBuilder query= new StringBuilder();
query.append("insert into tname(foo) values (").append(value).append(")");
... execute call with query.toString() ...
Run Code Online (Sandbox Code Playgroud)
理想情况下,使用准备好的声明
String value = "one's self";
StringBuilder query= StringBuilder();
query.append("insert into tname(foo) values (?)");
SQLiteStatement stmt= db.compileStatement(query.toString());
stmt.bindString(1, value);
long rowId= stmt.executeInsert();
// do logic check for > -1 on success
Run Code Online (Sandbox Code Playgroud)
这样您就不会遇到"SQL注入攻击".
有关更多信息,请参阅http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html.
编辑 我做了一些挖掘,您可以使用DatabaseUtils.sqlEscapeString(String)来转义字符串的内容,以便它对没有准备的完整SQL语句有效.
| 归档时间: |
|
| 查看次数: |
16949 次 |
| 最近记录: |