在安卓系统中是否有一种通用的方法来转义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.);");本例中的.将抛出一个异常以及其他几个字符。是否有一种通用的方法/方法来转义所有这些字符?
发布于 2015-08-31 18:33:35
在SQL中,字符串用'单引号'分隔。要在字符串中使用一个字符串,必须将其加倍。
没有其他字符需要在SQL中转义。(如果要在另一种语言(如Java )中嵌入字符串,还必须使用该语言的转义机制。)
若要避免字符串格式设置问题,应使用参数:
String name = "me";
db.rawQuery("SELECT ... WHERE name = ?", new String[]{ name });https://stackoverflow.com/questions/32315690
复制相似问题