Android SQLite學習指南

2021-07-09 08:36:00 字數 4172 閱讀 1841

一、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資料庫

在android中可以使用eclipse外掛程式ddms來檢視,也可以使用android工具包中的adb工具來檢視。android專案中的sqlite資料庫位於/data/data/專案包/databases中。

ddms中在file explorer中找到上面所示目錄,可以直接匯出對應的資料庫。

adb檢視資料塊:

1)執行cmd,切換到android-sdk目錄,執行adb.exe,加上引數shell,出現#號就代表進入了shell命令模式(adb shell),注意adb要在android模擬器執行時才能進入shell.

2)shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下檔案列表和進入到指定目錄。了解這兩個命令之後,就可以找到data/data/專案包名/databases.

3) 找到資料庫檔案,接下來就是使用sqlite管理工具來進行操作了。鍵入」sqlite3 資料庫名「就進入了qlite管理模式了。

說明:在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是乙個命令列工具。為了使用方便,將其路徑註冊到系統環境變數path中,即將;%android_home%加在path中,這樣就能執行sqlite3,可以直接開啟sqlite管理工具了。

4)sqlite管理資料庫

sqlite命令列工具預設是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。

sqlite常用命令:

.tables--檢視資料庫的表列表

.exit--退出sqlite命令列

其他命令可隨時.help檢視幫助。sql命令可直接在此命令列上執行即可:

五、**案例

案例一:

public

class sqlitehelper extends sqliteopenhelper

public sqlitehelper(context context)

@override

public

void oncreate(sqlitedatabase sqlitedatabase)

@override

public

void onupgrade(sqlitedatabase db, int oldversion, int newversion)

}public

void exedo(string sql)

}

public

class mainactivity extends activity

案例二:

view code

public

class dbhelper extends sqliteopenhelper

@override

public

void oncreate(sqlitedatabase db)

@override

public

void onupgrade(sqlitedatabase db, int oldversion, int newversion)

public cursor select()

public

long insert(string title)

public

void delete(int id)

;db.delete(table_name, where, wherevalue);

}public

void update(int id,string title)

;contentvalues cv=new contentvalues();

cv.put(field_title, title);

db.update(table_name, cv, where, wherevalue);

}}

android sqlite基本操作

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

關於Android SQLite詳細

一 sqlite簡介 在android平台上,整合了乙個嵌入式關係型資料庫 sqlite,sqlite3支援 null integer real 浮點數字 text 字串文字 和blob 二進位制物件 資料型別,雖然它支援的型別雖然只有五種,但實際上sqlite3也接受varchar n char ...

Android SQlite效能優化

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