Android基礎之SQLite資料庫及內容提供器

2021-07-09 15:34:23 字數 2807 閱讀 1526

哎,當失眠成為一種習慣,那就無所謂啦!!!

今天主要學習了sqlite資料庫以及內容提供器的相關知識

一、sqlite資料庫

sqlite資料庫是安卓自帶的資料庫,不僅支援標準的sql資料,還支援acid事務。

為了讓我們更加方便的管理資料庫,專門提供了乙個sqliteopenhelper幫助類,借助這個類我們可以

很輕鬆的對資料庫進行建立和公升級。

由於sqliteopenhelper是乙個抽象類,我們要使用它只能繼承它,並且重寫它的oncreate()和

onupdate()方法。

sqliteopenhelper中還有getreadabledatabase()和getwritabledatabase(),這兩個方法都可以用於建立或者開啟乙個現有的資料庫,

返回乙個可對資料庫進行讀寫操作的物件。

sqliteopenhelper中的兩個建構函式可供重寫。一般使用引數少的構造方法,共有四個引數,第乙個是context,上下文,為程式執行提供環境

第二個引數是資料庫名,第三個引數是返回乙個自定義的cursor,最後乙個引數是當前資料庫的版本號。

構造出sqliteopenhelper的例項後,便可以呼叫它的兩個get方法去建立資料庫了,此時,重寫的oncreate方法也會得到執行,所以一般在oncreate()方法中處理建表的邏輯。

1.建立乙個sqlite資料庫的**如下:

public class mydatabasehelper extends sqliteopenhelper

public void oncreate(sqlitedatabase db)

2.公升級資料庫只要是用到onupdate()方法

**如下:

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

更新資料**:

sqlitedatabase db = dbhelper.getwritabledatabase();

// 用於暫時性存放資料

contentvalues values = new contentvalues();

values.put("price", 10.99);

//這條語句中的第

三、四個引數的作用相當於where語句,第四個引數給第三個引數賦值

//引數型別均為字串型別

db.update("book", values, "name=?",

new string );

查詢資料**:

sqlitedatabase db=dbhelper.getwritabledatabase();

//查詢book中的所有資料,資料都儲存在cursor物件中

cursor cursor=db.query("book", null, null, null, null, null, null);

if(cursor.movetofirst())

while(cursor.movetonext());}}

4.使用事務保證資料的可靠性

事務的特性就是保證一系列的操作要麼全部完成,要麼乙個都不完成。

sqlitedatabase db=dbhelper.getwritabledatabase();

/*** 使用事務的好處就在於能夠一次性完成一性完成一系列的操作

* 使用事務首先要開啟事務(begintransaction),使用sqlitedatabase的物件

* 操作完成之後呼叫(settransactionsuccessful),表示事務執行成功

* 最後要將事務結束(endtransation())

* 由於事務要麼全做,要麼不做,在begin與end之間一旦有異常,ze會回滾到begin之前

* 保證了資料的安全性

*///開啟事務

db.begintransaction();

trycontentvalues values=new contentvalues();

values.put("name", "game of thrones");

values.put("author", "george martin");

values.put("pages", "720");

values.put("price","20.85");

db.insert("book", null, values);

//事務已經執行完畢

db.settransactionsuccessful();

}catch(exception e)

finally

}二、內容提供者

主要適用於在不同程式之間實現資料的共享功能,允許乙個程式訪問另外乙個程式的資料,並且保證安全性。

在這裡主要學習使用現有的內容提供器,自定義的由於用處較少,所以不做講解

要訪問內容提供器中的資料,就要借助於contentresolver類,可以通過context中的getcontentresolver()方法來獲取該類的例項,

不同於sqlitedatabase的是,contentreslover中的增刪改查是不接收表名的,而是用乙個uri引數代替,它由許可權和路徑組成。由於系統內容提供者

早已經封裝好,所以就不贅述。

下面是乙個獲取系統聯絡人的**,使用了系統封裝好的uri

public class mainactivity extends actionbaractivity

private void readcontacts()

}明天將進行通知相關的學習,加油,晚安!!!

寄語:我可以輸一陣子,但不能輸一輩子!!!

Android資料儲存和訪問之SQLite儲存

sqlite資料庫簡介 acid 資料庫事物正確執行的4個基本要素 1 原子性2 一致性3 隔離性4 永續性 資料的常用操作主要有以下 1 建立資料庫 2 新增資料庫 public void adddata view view 3 刪除資料 public void deletedata view v...

android中使用adb檢視sqlite資料庫

1.進入到控制台中,輸入adb shell,進入到命令模式的環境中 2.輸入cd data data 轉換到專案資料夾 3.選擇的專案檔案,比如我的com.android.homework,輸入命令 cd com.android.homework 4.可以使用ls l 命令檢視當前目錄中的檔案 5....

Android中sqlit資料庫公升級或者降級

sqlite是android內建的乙個很小的關係型資料庫。sqliteopenhelper是乙個用來輔助管理資料庫建立和版本公升級問題的抽象類。我們可以繼承這個抽象類,實現它的一些方法來對資料庫進行自定義操作。下面兩個方法必須重寫 onupgrade 呼叫時機是使用者在做應用更新,覆蓋安裝後啟動,如...