我的应用数据库有四个表,用于将记录上传到服务器。我想删除那些已同步到服务器的记录。我不知道是直接运行查询还是应该先在光标中记录,然后通过for循环删除。
有人可以通过示例代码给我指示吗?
答案 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();
}