SQLite更新/替换表Android

时间:2015-07-26 08:06:36

标签: android sqlite

我有一个从服务器获取JSON数据的应用程序。然后我将解析后的数据放入android SQLite数据库并根据需要使用数据。这一切都很好,但是,我无法找到更新整个表的方法。 场景是这个Json Data feed每周都会在服务器上更新。我有两个问题:

我缺少什么或更新SQLite表的方法是什么?(目前这只是重复数据)

public void updateTable(Product product){
    SQLiteDatabase db = this.getWritableDatabase();
    try{
        ContentValues values = new ContentValues();
    values.put(KEY_TYPE_NAME, product.getmProductTypeName());
    // more columns here...
    db.update(TABLE_NAME, values, null,null);
    db.close();
    }catch(Exception e){
    Log.e("error:",e + "in updateData method")
    }

什么是更新数据的理想系统?在连接到互联网时调用该方法会是一种愚蠢和不好的做法吗?

“主要活动”中的相关代码:

    handler = new DBHandler(this);
    NetworkUtils utils = new NetworkUtils(MainActivity.this);
    if (handler.getProductCount() == 0 && utils.isConnectingToInternet()) {
        new JsonDataParse().execute();
    }`

相关代码“DBhandler”活动:

    public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(DROP_TABLE);
    onCreate(db);
}

String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_TYPE_NAME + " TEXT" + ")"

这基本上是我的CREATE TABLE字符串格式。我只是浓缩,因为它有16列。

这是我添加的代码,仅在有数据时才删除存储的数据:

        if(handler.getProductCount() == 0) {

              }else{
                handler.deleteData();
            }

然后我只是按照建议添加了删除方法:

    public void deleteData() {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME, "1", null);
}

1 个答案:

答案 0 :(得分:0)

我不确定你的意思"更新整个表格"。听起来我只需要删除表中的数据,然后使用当前的方法添加新数据。要删除您可以使用的内容:

db.delete(TABLE_NAME, "1", null);

然后调用现有方法从服务器重新填充表。

  

更新数据的理想系统是什么?在连接到互联网时调用该方法会是一种愚蠢和不好的做法吗?

不,它不会是不好的做法。这是有道理的,因为如果您已经连接到互联网,您只能访问服务器。