2013-11-22 66 views
0

當我的Android應用程序有新的數據可用時,我需要完全刪除其中一個SQLite數據庫表中的所有當前條目,並用新數據替換它們。做這個的最好方式是什麼?在Android中覆蓋SQLite數據庫表的最佳方法是什麼?

難道是最好的數據庫運行

DELETE * FROM my_table 

運行一個delete查詢的每一行

或運行

database.execSQL(DATABASE_DROP_MY_TABLE); 
database.execSQL(DATABASE_CREATE_MY_TABLE); 

哪裏DATABASE_DROP_MY_TABLE是SQL來放下桌子和DATABASE_CREATE_MY_TABLE是 SQL來重新創建沒有條目的表。

然後按照其中之一插入新數據。

當然,還有其他方法可以做到這一點,我沒有想到。

回答

0

我不會使事情複雜化,只需使用DROP TABLE語句刪除表。正如doc所說:

SQLite DROP TABLE語句用於刪除表定義以及該表的所有關聯數據,索引,觸發器,約束和許可規範。

你會有乾淨的盤子,然後再次創建表格並添加新的數據。

1

假設你正在使用SQLiteOpenHelper,也可以直接關閉數據庫,刪除整個文件並重新創建數據庫:

class MyDatabase extends SQLiteOpenHelper { 
    public static final String DB_NAME = "wat"; 

    public MyDatabase(Context context) { 
    super(context, DB_NAME, null, CURRENT_VERSION); 
    } 
} 


dbHelper.close(); // dbHelper is your MyDatabase instance 
context.deleteDatabase(DB_NAME); 
SQLiteDatabase db = dbHelper.getWritableDatabase() // will create empty db 

這個解決方案很高興的事情是,你不會有更新表重置密碼當你添加新的表到你的模式。它也可以正確地重新創建您可能添加的索引。

相關問題