android學習記錄 十

2021-10-18 21:12:03 字數 3454 閱讀 5606

改變傳入的資料庫版本號就可以觸發資料庫公升級.

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不支...