2012-07-25 121 views
1

我想將數據庫架構升級到新版本。在我這樣做之前,首先我需要從現有數據庫中獲取一些數據。問題是,如果我試圖與這些讀取數據庫:如何獲取數據庫模式的版本?

DatabaseHelper dbHelper = new DatabaseHelper(context, DB_VERSION); 
SQLiteDatabase database = dbHelper.getReadableDatabase(); 

有可能會被升級(在DatabaseHelper.onUpgrade()),這是一個不受歡迎的行爲,我只是想從舊提取一些記錄,而不是升級版本。我想我可以通過在DB_VERSION中傳遞當前版本來做到這一點,但我如何獲得數據庫的當前版本(請記住,我將整個應用程序升級到下一個版本)?

或者還有另一種從數據庫獲取記錄而不會導致升級的方法嗎?

回答

2

直接使用SQLiteDatabase並執行查詢以獲取版本。它不會嘗試升級或修改它。打開只讀的額外保護:)

+0

讓我們假設新的應用程序版本有DB_VERSION = 10。我們不知道哪個版本是舊應用程序(它可能是從1到9)。然後,第二行代碼DatabaseHelper.onUpgrade()將立即被調用。我對嗎?那麼如果我想在onUpgrade()之前查詢它,我怎麼可以使用任何查詢到數據庫? – Prizoff 2012-07-25 12:19:11

+0

閱讀我再次說的話。不要使用'DatabaseHelper',直接使用'SQLiteDatabase'。它可以在不運行升級代碼的情況下打開文件。 – 2012-07-25 12:42:44

相關問題