androidsqlite转义Where子句
Android中SQLite是否需要转义where子句androidsqlite转义Where子句,android,sql,sqlite,android-sqlite,Android,Sql,Sqlite,Android Sqlite,Android中SQLite是否需要转义where子句 ContentValues vals= new ContentValues(); vals.put(KEY, val); String where = DatabaseUtils.sqlEscapeString(val); db.update(TABLE_NAME, vals, KEY + "='" + where + "'", null); 出于某种原因,如果我使用db.updateTABLE_NAME、vals、KEY+=?、新字
ContentValues vals= new ContentValues();
vals.put(KEY, val);
String where = DatabaseUtils.sqlEscapeString(val);
db.update(TABLE_NAME, vals, KEY + "='" + where + "'", null);
出于某种原因,如果我使用db.updateTABLE_NAME、vals、KEY+=?、新字符串[]{where};它不起作用
编辑:我的问题是是否需要使用DatabaseUtils.sqlEscapeString转义where,或者update方法或任何其他SQLite方法是否会为我转义where。需要在第三个参数槽中使用SQL where子句,而不是转义的参数值。它需要一个值数组插入WHERE子句,而不是WHERE这个词
以下是方法签名:
public int update (
String table, ContentValues values, String whereClause, String[] whereArgs)
您应该使用DatabaseUtils.sqlEscapeStringstringToEscape
其中,在sqllite更新方法中假定为
ContentValues vals= new ContentValues();
vals.put(KEY, val);
db.update(TABLE_NAME, vals, KEY + " = ?",new String[] {String.valueOf(DatabaseUtils.sqlEscapeString(val)) });
如果要插入到sql字符串中的任何内容可能包含sql元字符,则需要对其进行转义。例如,考虑KEY键= MealO'Burein。我想我的问题是,如果UPDATE方法为您提供了更多的信息。它被设置为DataSeutils.sqlEscapeStringval并包含SQL转义val。那么,也许您应该更具体地说明您收到的错误消息。就使用字符串[]与将整个where子句放入where子句而言,我在使用字符串[]时没有收到实际错误;它只是找不到确实满足where子句条件的行,而通过where子句参数传入整个子句会找到行。这就是我现在使用的。我的问题真的应该是update方法是否能逃过它。