簡體   English   中英

android sqliteDatabase表重新創建

[英]android sqliteDatabase table recreation

在運行我的android應用程序時,我已經在其中創建了一個database和一個表user

問題是,當我第一次創建user表時,我錯過了要創建的字段password 因此,我重寫了我的代碼,以便再次創建user表,其中包含字段password

但是問題是我已將代碼放在DatabaseHelper類中的onCreate方法中。

由於數據庫已經存在,因此函數onCreate將永遠不會調用。

誰能告訴我如何解決這個問題。

您可以使用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法DatabaseHelper類

db-數據庫。

oldVersion-舊的數據庫版本。

newVersion-新的數據庫版本。

在需要升級數據庫時調用。 實現應使用此方法刪除表,添加表或執行其他任何升級到新架構版本所需的操作。 可以在這里找到SQLite ALTER TABLE文檔。 如果添加新列,則可以使用ALTER TABLE將它們插入活動表中。 如果重命名或刪除列,則可以使用ALTER TABLE重命名舊表,然后創建新表,然后使用舊表的內容填充新表。 參量

幾乎沒有可用的方法:

  1. 如果您具有設備的超級用戶訪問權限或使用仿真器-可以使用adb shell查找SQLite數據庫並將其刪除(這樣它將在下次啟動應用程序時重新創建它)或使用sqlite命令行工具 -修改表結構自己。 當然,僅當您在開發過程中錯過了某些東西並願意快速修復它而不考慮任何現有用戶時,這才適合。

  2. 增加應用程序的版本號並實現onUpgrade方法,您可以在該方法上對現有數據庫進行所有必需的轉換。 這應該用於實際的應用程序版本升級,考慮現有用戶及其應用程序安裝。

一個簡單的選擇就是在設置菜單上卸載設備上的應用程序(或使用adb卸載命令),然后如果再次運行該應用程序,該數據庫也將被刪除並重新創建。

快速而簡單,而無需實施onUpgrade之類的東西,這將在應用程序投放市場時/確實在使用中。

您只需使用adb shell訪問sqlite數據庫,如果您的應用已安裝在手機上,則需要root訪問權限。 這里是一些參考-尋找從遠程Shell檢查sqlite3數據庫

另一種方法是從“設置”->“應用程序”->“管理應用程序”->“您的應用程序”中刪除數據庫,然后單擊“清除數據”按鈕,這將刪除您的Sqlite數據庫和“共享首選項”。 之后,您可以使用正確的表DDL重新運行您的應用程序,並且將使用正確的定義創建數據庫。

以編程方式來講,您將需要從助手中覆蓋onOpen並使用db.execSql()將表更改DDL放入。 將您的alter table放在此處,或者將其放到最前面,然后使用正確的定義創建新的table。 這是該類的參考SQLiteOpenHelperSQLiteDatabase ,也請參考此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM