對SQLiteOpenHelper類的理解

2021-05-24 13:58:27 字數 1255 閱讀 9282

使用sqliteopenhelper對資料庫進行版本管理

因為我們開發的軟體可能會安裝在成百上千個使用者的手機上,如果應用使用到了sqlite資料庫,我們必須在使用者初次使用軟體時建立出應用使用到的資料庫表結構及新增一些初始化記錄,另外在軟體公升級的時候,也需要對資料表結構進行更新。那麼,我們如何才能實現在使用者初次使用或公升級軟體時自動在使用者的手機上建立出應用需要的資料庫表呢?總不能在每個需要安裝此軟體的手機上通過手工方式建立資料庫表吧?因為這種需求是每個資料庫應用都要面臨的,所以在android系統,為我們提供了乙個名為sqliteopenhelper的抽象類,必須繼承它才能使用,它是通過對資料庫版本進行管理來實現前面提出的需求。

為了實現對資料庫版本進行管理,sqliteopenhelper類提供了兩個重要的方法,分別是oncreate(sqlitedatabase db)和onupgrade(sqlitedatabase db, int oldversion, int newversion),前者用於初次使用軟體時生成資料庫表,後者用於公升級軟體時更新資料庫表結構。當呼叫sqliteopenhelper的getwritabledatabase()或者getreadabledatabase()方法獲取用於運算元據庫的sqlitedatabase例項的時候,如果資料庫不存在,android系統會自動生成乙個資料庫,接著呼叫oncreate()方法,oncreate()方法在初次生成資料庫時才會被呼叫,在oncreate()方法裡可以生成資料庫表結構及新增一些應用使用到的初始化資料。onupgrade()方法在資料庫的版本發生變化時會被呼叫,一般在軟體公升級時才需改變版本號,而資料庫的版本是由程式設計師控制的,假設資料庫現在的版本是1,由於業務的變更,修改了資料庫表結構,這時候就需要公升級軟體,公升級軟體時希望更新使用者手機裡的資料庫表結構,為了實現這一目的,可以把原來的資料庫版本設定為2(有同學問設定為3行不行?當然可以,如果你願意,設定為100也行),並且在onupgrade()方法裡面實現表結構的更新。當軟體的版本公升級次數比較多,這時在onupgrade()方法裡面可以根據原版號和目標版本號進行判斷,然後作出相應的表結構及資料更新。

getwritabledatabase()和getreadabledatabase()方法都可以獲取乙個用於運算元據庫的sqlitedatabase例項。但getwritabledatabase() 方法以讀寫方式開啟資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,倘若使用的是getwritabledatabase() 方法就會出錯。getreadabledatabase()方法先以讀寫方式開啟資料庫,如果資料庫的磁碟空間滿了,就會開啟失敗,當開啟失敗後會繼續嘗試以唯讀方式開啟資料庫。

對建立游標對理解

步驟 1 首先經過底層的 編寫已經建立起了了python和資料庫之間的溝通橋梁並封裝成了模組,通過pymysql下的conntent 方法與之建立起了連線,例項物件。pymysql.connect 方法返回的是connections模組下的connection 例項,connect 方法傳參就是在給...

對勾函式 對勾函式

對勾函式是一種類似於反比例函式的一般函式。所謂的對勾函式,是形如 f x ax b x 的函式,是 一種教材上沒有但考試老喜歡考的函式,所以更加要注意和學習。一般的函式影象形似兩個中心對稱的 對勾,故名。當x 0 時,f x ax b x 有最小值 這裡為了研究方便,規定a 0 b 0 也就是當 x...

一對多 多對一

pip install djangorestframework 3.9.2 pip install markdown 3.0.1 markdown support for the browsable api.pip install django filter 2.1.0 filtering supp...