Android中删除表中所有行的最佳方式是什么?
我有一个WCF女巫提供了一些JSON数据,然后将其保存到本地数据库中。工作正常 我有一个活动女巫从本地数据库填充数据到一个列表视图工作正常。Android中删除表中所有行的最佳方式是什么?
public void fillData() {
// Fields from the database (projection)
// Must include the _id column for the adapter to work
String[] from = new String[] { TodoTable.COLUMN_SUMMARY };
// Fields on the UI to which we map
int[] to = new int[] { R.id.label };
getLoaderManager().initLoader(0, null, this);
adapter = new SimpleCursorAdapter(this, R.layout.todo_row, null, from,
to, 0);
lw.setAdapter(adapter);
}
我无法弄清楚什么是在WCF同步操作之前删除所有行的最佳方法。
我能做到这一点通过将所有编号的从数据库中,然后找到该行的URI,然后使用:
getContentResolver().delete(uri, null, null)
我只是觉得必须有一个更好的办法,我在网上看到很多例子说使用dbHelper类,但我无法弄清楚如何从活动或在ContentProvider的
希望让任何意义
使用DatabaseHelper
所有的行,你可以这样做:
dbHelper = new DatabaseHelper(context);
database = dbHelper.getWritableDatabase();
public void clearTable() {
database.delete(TABLE, null,null);
}
这是否删除整个表?我仍然需要表只是想清除行 –
@Tintinabulator Zea这只会删除给定表中的所有行。更多信息:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#delete(java.lang.String,java.lang.String,java.lang.String []) – Kristopher
这是不是最优的,因为它不通知数据变化。你应该覆盖你的内容提供商的删除方法 – hadi
如果你只是想删除表中的所有行访问dbHelper类:
drop table if exists "tablename"
然后用适当的列重新创建表格。我个人觉得这样做很容易。
尝试
<your-SQLite-instance>.execSQL("DELETE FROM <table_name>");
这将下降,由<table_name>
阅读文档:execSQL() 执行不是SELECT/INSERT/UPDATE/** DELETE **的单个SQL语句。 – Selvin
@Selvin你也应该读它,这是'execSQL(String sql,Object [] bindArgs)'不适用于'execSQL(String sql)'。我发布的代码在生产中使用,并且可以工作... – bclymer
好的如此:'它无法返回任何数据(例如受影响的行数)。'DELETE返回受影响的数'使用我发布的代码在生产和工作',但你应该鼓励使用insert/update/delete来代替(如'execSQL(String sql)'doc) – Selvin
尝试使用此代码来删除表中的所有行:
database.delete(tablename, null,null);
只需更换你要删除的行
表
database
为你的数据库名称和tablename
如果你有自己的ContentProvider然后'getContentResolver()。删除(URI,NULL,NULL)'是好的......但是。 .. uri不应该指向特定的“item”,而是指向整个“dir”('content:// com.authority/tablename/111' Selvin如果你这样做,你不需要找到数据库的所有id。所有你需要做的就是给它的数据库的URI,而不是一个特定的项目 – tyczj
对不起,这是我是新手的(@Selvin。你的答案已经完成了。Ty。作出回复,所以我可以除了它,正确的代码是:'getContentResolver().delete(TodoContentProvider.CONTENT_URI,null,null);' – Jester