改變傳入的資料庫版本號就可以觸發資料庫公升級.
val dbhelper=
mydatabasehelper
(this
,"bookstore.db",5
)
此時會呼叫onupgrade方法.
重寫onupgrade方法
override
funonupgrade
(db: sqlitedatabase, oldversion: int, newversion: int)
這樣就會重新呼叫oncreate方法
override
funoncreate
(db: sqlitedatabase)
新增資料adddata.
setonclicklistener
db.insert
("book"
,null
,values1)
val values2=
contentvalues()
. db.
insert
("book"
,null
,values2)
}
更新資料updatedata.
setonclicklistener
刪除資料deletedata.
setonclicklistener
簡單查詢資料querydata.
setonclicklistener
while
(cursor.
movetonext()
)}cursor.
close()
}
執行結果
也可以不使用android 提供的api
//新增資料
db.execsql
("insert into book (name,author,pages,price) values (?,?,?,?)"
,arrayof
("the da vinci code"
,"dan brown"
,"454"
,"16.96"))
//更新資料
db.execsql
("update book set price=? where name =?"
,arrayof
("10.99"
,"the da vinci code"))
//刪除資料
db.execsql
("delete from book where pages>?"
,arrayof
("500"))
//查詢資料
val cursor=db.
rawquery
("select * from book"
,null
)
實現刪除資料和新增資料的操作必須一起完成.
測試**
replacedata.
setonclicklistener
db.insert
("book"
,null
,values)
db.settransactionsuccessful()
}catch
(e: exception)
finally
}
通過手動丟擲異常進行測試發現,資料並沒有刪除也沒有更新,也就是說事務出現異常後之前的刪除並不會執行. 刪除這行測試**後就可以正常刪除和更新了.
需求一(新增一張新的表)
package com.example.databasetest
import android.content.context
import android.database.sqlite.sqlitedatabase
import android.database.sqlite.sqliteopenhelper
import android.widget.toast
class
mydatabasehelper
(val context: context,name: string,version: int)
:sqliteopenhelper
(context,name,
null
,version)
override
funonupgrade
(db: sqlitedatabase, oldversion: int, newversion: int)}}
//mydatabasehelper 繼承抽象類sqliteopenhelper,並且重寫其中的兩個抽象方法
如果使用者第一次安裝,那麼會直接呼叫oncreate方法,由於之前沒有資料,於是在這裡直接新建兩張表.
如果使用者不是第一次安裝,那麼執行更新操作,呼叫onupgrade方法.此時判斷其版本,然後新增資料表
需求二 在book表中新增乙個category_id欄位
修改建表語句, 將該版本需要的操作新增到onupgrade中,而對於新使用者只要通過oncreate實現最新版本即可.
package com.example.databasetest
import android.content.context
import android.database.sqlite.sqlitedatabase
import android.database.sqlite.sqliteopenhelper
import android.widget.toast
class
mydatabasehelper
(val context: context,name: string,version: int)
:sqliteopenhelper
(context,name,
null
,version)
override
funonupgrade
(db: sqlitedatabase, oldversion: int, newversion: int)
if(oldversion <=6)
}}//mydatabasehelper 繼承抽象類sqliteopenhelper,並且重寫其中的兩個抽象方法
Android學習記錄
1 setcontentview 將指定的資源xml檔案載入到對應的activity中 如下 setcontentview r.layout.activity main 2 findviewbyid 根據id查詢控制項 如下 glsu ceview vsv glsu ceview findviewb...
Android學習筆記 十
軟體引數設定 sharedpreferencesactivity package org.wp.sharedpreferences android平台給我們提供了乙個sharedpreferences類 它是乙個輕量級的儲存類,特別適合用於儲存軟體配置引數。使用sharedpreferences儲存...
JavaScript學習記錄十
總結繫結事件的區別 addeventlistener attachevent 相同點 都可以為元素繫結事件 不同點 1.方法名不一樣 2.引數個數不一樣addeventlistener三個引數,attachevent兩個引數 3.addeventlistener 谷歌,火狐,ie11支援,ie8不支...