从Android中的SQLite中删除记录

时间:2015-06-25 04:07:42

标签: android sqlite

我的应用数据库有四个表,用于将记录上传到服务器。我想删除那些已同步到服务器的记录。我不知道是直接运行查询还是应该先在光标中记录,然后通过for循环删除。

有人可以通过示例代码给我指示吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码从数据库中删除已同步的记录。但首先你需要管理你的数据库中的sync标志,希望你已经做了以这种方式完成的事情:在你的数据库中创建一个整数或布尔列,告诉你你的数据库与服务器同步,并在更新后你必须调用以下方法来删除已经同步的记录:

public boolean deleteSyncRecord(String tableName) 
{
    String whereClause = "_isSync" + "=?";
    String[] whereArgs = new String[] { "true" };
    return db.delete(tableName, whereClause, whereArgs) > 0;
}

答案 1 :(得分:1)

由于您在推送到服务器后不打算使任何记录保持脱机状态。

您可以在API调用成功后删除表的所有记录。

public void deleteAll(String tableName){

SQLiteDatabase db = this.getWritableDatabase();

db.execSQL("DELETE FROM "+tableName); 

db.close();

}

如果您打算让记录保持脱机状态,您可以使用单独的列status来反映记录的各种状态(具体取决于要求)

  

价值 - >含义

     

A - >已添加但未同步到服务器

     

S - >同步到服务器

     

M - >修改了同步记录

     

DL - >在本地删除

     

D - >在服务器和应用程序中完全删除。

您可以使用Update sql命令修改现有列的状态。

如果你打算根据Status值删除一些记录。让我的D完全没用。所以我们可以继续进行。

public void deleteMarked(String tableName){

SQLiteDatabase db = this.getWritableDatabase();

db.execSQL("DELETE FROM "+tableName+" where status='D'");

db.close();

}