gpt4 book ai didi

android - 如何在 Android 上的 SQLite 中转义不受支持的字符?

转载 作者:IT老高 更新时间:2023-10-28 23:18:41 26 4
gpt4 key购买 nike

谁能告诉如何在android中的sqlite中转义或替换不支持的字符,如单引号,任何人都可以举个例子

谢谢

最佳答案

您可以使用 commons-lang 实用程序,也可以使用正则表达式来处理它。

如果您正在构建动态 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() ...

改成

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() ...

理想情况下,使用准备好的语句

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

这样你就不会遇到“SQL注入(inject)攻击”。

请参阅 http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html了解更多信息。

编辑我做了一点挖掘,你可以使用DatabaseUtils.sqlEscapeString(String)转义字符串的内容,使其对没有准备的完整 SQL 语句有效。

关于android - 如何在 Android 上的 SQLite 中转义不受支持的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5432063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com