Как использовать SQLite "whereClause" внутри метода обновления - PullRequest
1 голос
/ 17 ноября 2011

Я имею дело с sqlite db в приложении для Android. Для обновления строки в БД я использую метод объекта SQLiteDatabase «update»

SQLiteDatabase.update(String table, ContentValues values, String whereClause, String[] whereArgs)

Но здесь путаница, как должно выглядеть "whereClause"? Предположим, у меня есть эти значения для обновления.

values.put("name", appInfo.getName());
values.put("package_name", appInfo.getPackageName());
values.put("version_name", appInfo.getVersionName());

Я хочу обновить строку, в которой столбец package_mane равен "com.mynamespace.db". Как «где Клаус» должен быть написан здесь? Спасибо.

Ответы [ 4 ]

8 голосов
/ 17 ноября 2011
db.update("table", values, "package_name = ?", new String[]{"com.mynamespase.db"});

Другой пример:

db.update("table", values, "package_name = ? and other_field = ?", new String[]{"com.mynamespase.db", "test"});
4 голосов
/ 17 ноября 2011

Вы whereClause должны выглядеть следующим образом:

String whereClause = "package_mane = ?"; // package_name perhaps?
String[] whereArgs = new String[]{"com.mynamespase.db"};

Строка из whereArgs используется для замены ? в whereClause.

3 голосов
/ 17 ноября 2011

Вы должны использовать это так:

SQLiteDatabase.update(table, "package_name=?", new String[] { "com.mynamespace.db" });

и предотвратить другие проблемы и неэффективность кэширования, если вы объедините строку.

2 голосов
/ 17 ноября 2011
db.update(TABLE_NAME, values, "package_name=com.mynamespase.db", null);

// or

String[] args = { "com.mynamespase.db" };
db.update(TABLE_NAME, values, "package_name=?", args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...