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.);");
此示例中的.
将抛出异常以及其他几个字符。是否有一种通用的方法/方法来逃避所有这些角色?
答案 0 :(得分:3)
在SQL中,字符串以'
单引号'
分隔。要在字符串中使用一个,你必须加倍。
在SQL中没有其他需要转义的字符。 (如果您使用其他语言(如Java)嵌入字符串,则还必须使用该语言的转义机制。)
为避免字符串格式化问题,您应该使用参数:
String name = "me";
db.rawQuery("SELECT ... WHERE name = ?", new String[]{ name });