gpt4 book ai didi

android - SQLite:转义特殊字符

转载 作者:搜寻专家 更新时间:2023-11-01 08:41:20 26 4
gpt4 key购买 nike

在 Android 中是否有一种通用的方法来转义 SQLite 数据库中不允许的所有字符?例如,“你\'我'”。而不是我弄清楚每个不允许的字符并创建一堆或替换语句。我正在寻找类似以下内容的内容。

value = SQLite.escapeString(value);
ContentValues contentValues = new ContentValues();
contentValues.put("name", value);
getContentResolver().insert(CONTENT_URI, contentValues);

//Retrieve data
Cursor cursor = getContentResolver().query(CONTENT_URI, null, "name=?", new String[]{SQLite.escapeString(value)}, null);
value = SQLite.unescapeString(cursor.getString(cursor.getColumnIndex("name"));

这是一厢情愿的想法还是已经有办法解决这个问题?

更新

上面的代码可以工作,但是在你不能使用 ?运算符,您仍然需要一些方法来转义所有字符。例如:

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" 
+ KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_CATEGORY + " TEXT DEFAULT Misc.);");

此示例中的 . 将抛出异常以及其他几个字符。是否有一种通用的方法/方式来转义所有这些字符?

最佳答案

在 SQL 中,字符串用 '单引号' 分隔。要在字符串中使用一个,您必须将其加倍。

SQL中没有其他需要转义的字符。(如果您在另一种语言中嵌入字符串,例如 Java,您还必须使用该语言的转义机制。)

为避免字符串格式问题,您应该改用参数:

String name = "me";
db.rawQuery("SELECT ... WHERE name = ?", new String[]{ name });

关于android - SQLite:转义特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32315690/

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