Android的SQLite删除表,实际上并没有删除行

嗨,我想通过下面的查询删除表中的所有行

db.beginTransaction(); // db is a SQLiteDatabase object int deleted = db.delete("user", null, null); db.endTransaction(); 

我得到n表中删除的行数。 但是表中仍然存在行。 我的删除电话中有任何错误?

在调用endTransaction之前,您需要调用setTransactionSuccessful来提交对数据库所做的所有更改:

 db.beginTransaction(); int deleted = db.delete("user", null, null); db.setTransactionSuccessful(); db.endTransaction(); 

来源(Android开发人员参考):

如果任何事务没有被标记为干净(通过调用setTransactionSuccessful),则更改将被回滚。 否则,他们将承诺。

试试这个

 public int delete(String tableName) { SQLiteDatabase db = this.getWritableDatabase(); int x = db.delete(tableName, null, null); db.close(); return x; } 

尝试一下 :

db.execSQL("DROP TABLE IF EXISTS table_name");

其中db是对SqliteDatabase对象的引用。

当我们安装应用程序时,数据库文件将在/ data文件夹中重新创build。 即使在删除文件后,由于数据库的重新创build,该问题可能会发生。

检查是否是这种情况。

 String query="delete from "+tablename; SQLiteDatabase db=getWritableDatabase(); db.execSQL(query); Log.d("msg","deleted");