Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
androidsqlite转义Where子句_Android_Sql_Sqlite_Android Sqlite - Fatal编程技术网

androidsqlite转义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+=?、新字

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+=?、新字符串[]{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方法是否能逃过它。