Android SQLite删除表实际上没有删除行

时间:2014-07-16 10:42:53

标签: android mysql ios sql sqlite

您好我正在尝试通过以下查询删除表格中的所有行

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

我在表中删除了n行。但表中仍然存在行。我的删除电话有什么问题吗?

5 个答案:

答案 0 :(得分:6)

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

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

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

  

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

试一试:

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

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

答案 3 :(得分:0)

安装应用程序时,会在/ data文件夹中重新创建数据库文件。即使删除文件后,由于重新创建数据库,也可能会出现问题。

检查是否是这种情况。

答案 4 :(得分:0)

String query="delete from "+tablename;

SQLiteDatabase db=getWritableDatabase();

db.execSQL(query);

Log.d("msg","deleted");