關於Android SQLite詳細

2021-07-08 14:37:56 字數 2207 閱讀 5324

一、sqlite簡介

在android平台上,整合了乙個嵌入式關係型資料庫—sqlite,sqlite3支援 null、integer、real(浮點數字)、text(字串文字)和blob(二進位制物件)資料型別,雖然它支援的型別雖然只有五種,但實際上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等資料型別,只不過在運算或儲存時會轉成對應的五種資料型別。 sqlite最大的特點是你可以儲存任何型別的資料到任何欄位中,無論這列宣告的資料型別是什麼。例如:可以在integer欄位中存放字串,或者在布林型字段中存放浮點數,或者在字元型字段中存放日期型值。 但有一種情況例外:定義為integer primary key的字段只能儲存64位整數, 當向這種欄位中儲存除整數以外的資料時,將會產生錯誤。另外, sqlite 在解析create table 語句時,會忽略 create table 語句中跟在欄位名後面的資料型別資訊。

二、sqlite的curd

android提供了乙個名為sqlitedatabase的類,該類封裝了一些運算元據庫的api,使用該類可以完成對資料進行新增(create)、查詢(retrieve)、更新(update)和刪除(delete)操作(這些操作簡稱為crud)。對sqlitedatabase的學習,我們應該重點掌握execsql()和rawquery()方法。 execsql()方法可以執行insert、delete、update和create table之類有更改行為的sql語句; rawquery()方法可以執行select語句。sqlitedatabase還專門提供了對應於新增、刪除、更新、查詢的操作方法:insert()、delete()、update()和query() 。這些方法實際上是給那些不太了解sql語法的菜鳥使用的,對於熟悉sql語法的程式設計師而言,直接使用execsql()和rawquery()方法執行sql語句就能完成資料的新增、刪除、更新、查詢操作。

三、sqlite的事務管理

使用sqlitedatabase的begintransaction()方法可以開啟乙個事務,程式執行到endtransaction() 方法時會檢查事務的標誌是否為成功,如果為成功則提交事務,否則回滾事務。當應用需要提交事務,必須在程式執行到endtransaction()方法之前使用settransactionsuccessful() 方法設定事務的標誌為成功,如果不呼叫settransactionsuccessful() 方法,缺省會回滾事務。

三、sqlite建立、更新資料表

如果應用使用到了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(或其他數值),並且在onupgrade()方法裡面實現表結構的更新。當軟體的版本公升級次數比較多,這時在onupgrade()方法裡面可以根據原版號和目標版本號進行判斷,然後作出相應的表結構及資料更新。

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

android sqlite基本操作

package com.xiangqiao.sqlite3 import android.content.contentvalues import android.database.cursor import android.database.sqlite.sqlitedatabase import...

Android SQlite效能優化

dec 13th,2015 資料庫是應用開發中常用的技術,在android應用中也不例外。android預設使用了sqlite資料庫,在應用程式開發中,我們使用最多的無外乎增刪改查。縱使操作簡單,也有可能出現查詢資料緩慢,插入資料耗時等情況,如果出現了這種問題,我們就需要考慮對資料庫操作進行優化了。...

android SQLite疑點分析

當我們從乙個資料來源去查詢資料會用到下面的查詢方法,db.query db.rawquery db.exesql 這些方法的構造引數都不一樣,甚至有的方法還是多型的,這裡不對每個方法的多型做具體說明,只是簡單的說一下這些方法的區別是什麼 db.query 首先這是個查詢資料的,返回游標,游標裡面包含...