有没有一种简单的方法来更新android中的sqlite表? (像建立方法中的单行)?我有一个有几列的表,主要是一列。我想按主键搜索,然后更新表中的一行。sqlite数据库更新
回答
您可以使用rawQuery
这样的:
cur = mDb.rawQuery("update " + TABLE_NAME
+ " set column1=mango where id='" + _id + "'",null);
其中
cur
是Cursor
对象TABLE_NAME
是NAME OF THE TABLE
_id
是name of the column
(只是举例)
要使用预定义的更新使用方法在Android,如下使用它:
ContentValues args = new ContentValues();
args.put("col_name", "new value");
db.update("table_name", args, String.format("%s = ?", "primary_column"),
new String[]{"primary_id"});
或者作为一个单独行,去与这个(不推荐):
db.execSQL("UPDATE table_name SET col_name='new_value' WHERE
primary_column='primary_id'");
那么你应该已经知道什么是你的主键。
dbHelper.getWritableDatabase();
ContentValues values = createContentValues(profileVo);
db.update(ProfileVO.TABLE_NAME, values, ProfileVO.COLUMN_ID + "=" + profile.getId(), null)
这里有一个很好的教程为你http://www.vogella.com/articles/AndroidSQLite/article.html
的文档,你应该像这样结束:
affected = db.update(TABLE_NAME, values, where, whereArgs);
UDPATE
不惜一切代价避免使用容易出错的语法进行原始查询。我在这里看到很多答案,使用了很多'"' + SOMETHING + "'"
......这是非常糟糕的做法,你会花费你所有的时间在很难找到的地方寻找错误,或者完全浪费时间。
如果您必须使用原始查询,请尝试使用String.format形成它们以避免危险的调试会话和偏移。
加上一个更新。始终更喜欢使用db.update()方法,而不是手动原始查询。试图存储一个包含撇号的json也会让你信服 – kouretinho
试试这个:
public void updateFunction(int id) {
String updateStmnt = "UPDATE YOUR_TABLE SET YOUR_COLUMN = "
+ id;
database.execSQL(updateStmnt);
}
希望这将有助于。
考虑使用string.format而不是'+'来表示字符串......它更清晰易读,更不容易出错 – Merlin
使用database.update
使简单是这样的:
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_NAME, name);
values.put(MySQLiteHelper.COLUMN_JOB, job);
values.put(MySQLiteHelper.COLUMN_DATE_START, date_start);
database.update(MySQLiteHelper.TABLE_EMPLOYEES, values, MySQLiteHelper.COLUMN_ID+"="+id, null);
我知道这有点老了,但万一有人需要另一种方式:我用这个
public boolean updateNote(Note note) {
SQLiteDatabase db = notesDbHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(NotesDbContract.NoteEntry._ID, note.getId());
contentValues.put(NotesDbContract.NoteEntry.COLUMN_NAME_TITLE, note.getTitle());
contentValues.put(NotesDbContract.NoteEntry.COLUMN_NAME_DSECRIPTION, note.getDescription());
int result = db.update(NotesDbContract.NoteEntry.TABLE_NAME,
contentValues,
NotesDbContract.NoteEntry._ID + "=?", new String[]{String.valueOf(note.getId())}
);
db.close();
return result > 0;
}
- 1. 更新数据库SQLite的
- 2. Android SQLite数据库更新
- 3. 更新iPhone SQLite数据库
- 4. Android:更新SQLite数据库
- 5. 更新SQLite数据库android
- 6. 更新SQLite数据库
- 7. sqlite数据库更新
- 8. 当服务器数据库更新时更新sqlite数据库
- 9. SQLite数据库不会更新数据
- 10. 更新SQLite数据库中的数据
- 11. 如何在Sqlite数据库中更新数据时更新ListFragment
- 12. Android SQLite数据库在更新多个更新时未更新
- 13. 通过JSON更新iPhone SQLite数据库
- 14. 我无法更新SQLite数据库Android
- 15. sqlite不更新我的数据库iOS
- 16. SQLite数据库没有更新
- 17. 如何更新SQLite数据库
- 18. 更新sqlite数据库Objective-c
- 19. 更新sqlite数据库版本?
- 20. SQLite数据库没有更新
- 21. 更新SQLite数据库导致错误
- 22. SQLite UPDATE命令不更新数据库
- 23. iPhone SQLite数据库没有更新
- 24. SQLite数据库更新行机器人
- 25. 无法更新的Android SQLite数据库
- 26. SQLite数据库 - 更新查询
- 27. Sqlite数据库没有更新
- 28. 调用SQLite数据库来更新UITableView
- 29. 更新的SQLite数据库的图像
- 30. 更新SQLite数据库的问题
感谢。 :)非常感谢帮助队友! :) – harsh
通过使用string.format来构建查询,避免使用容易出错的语法,例如'String.format(“update%s set column1 =%s where id ='%s'”,TABLE_NAME,“mango”,_ id) “@Waqas的答案更加准确,因为它允许在不更改代码的情况下更新可变数量的字段。 – Merlin