在Android中,當您升級數據庫時,所有數據都會丟失。將平面文件加載到Android數據庫表中
我正在經歷一個開發階段,它迫使許多數據庫升級。
每次升級數據庫時,我都不想丟失所有數據(並且必須手動重新輸入)。
我想將我的數據存儲在平面文件中,並在每次數據庫升級時將這些平面文件加載到它們各自的表中。
在Android平臺上這樣做的方式是什麼?我應該在哪裏存儲數據文件(res/raw
)
我應該執行什麼樣的sql來加載這些文件?
在Android中,當您升級數據庫時,所有數據都會丟失。將平面文件加載到Android數據庫表中
我正在經歷一個開發階段,它迫使許多數據庫升級。
每次升級數據庫時,我都不想丟失所有數據(並且必須手動重新輸入)。
我想將我的數據存儲在平面文件中,並在每次數據庫升級時將這些平面文件加載到它們各自的表中。
在Android平臺上這樣做的方式是什麼?我應該在哪裏存儲數據文件(res/raw
)
我應該執行什麼樣的sql來加載這些文件?
我會把平板文件在res/raw
,除非他們是XML
,在這種情況下,我會把它們放在res/xml
。
至於插入數據庫中的數據,我只是循環通過平面文件中的值,併爲每行插入。
快速瀏覽一下,我沒有看到Android中的任何批量插入方法。
只需根據文件類型使用FileReader
或XmlPullParser
讀取平面文件。
如果你的文件是一個.csv格式,你不能只使用一個導入語句或其他東西來將整個文件導入到一個表中? ...也就是說,不是獨立插入每一行。 – MoMo
mbaird對於存儲平面文件有一個很好的答案。但在你的情況下(如果我正確理解你的話),你可以通過執行SQLiteOpenHelper來避開它。只需存儲數據庫版本並將其傳遞給構造函數即可。然後處理onUpgrade()中的任何更改。你不會失去所有的數據。
我不知道SQLiteOpenHelper。這很好。 –
這裏是一個關於重新導入現有的sqlite數據庫的帖子的鏈接,可能會有所幫助:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ – JeremyFromEarth