日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android數(shù)據(jù)庫:存取數(shù)據(jù)的終極指南(android下數(shù)據(jù)庫)

Android平臺(tái)作為如今移動(dòng)設(shè)備應(yīng)用開發(fā)最重要的平臺(tái)之一,其中的數(shù)據(jù)庫應(yīng)用也變得日益重要。對于那些對于數(shù)據(jù)庫的存取處理不是很理解的開發(fā)人員來說,要在Android應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)存取也可稱得上是一場災(zāi)難。不同版本的Android平臺(tái)都有著不同的數(shù)據(jù)庫API,還有著不少的坑點(diǎn)。本文將通過介紹在Android平臺(tái)下的SQLite數(shù)據(jù)庫的使用方法、效率的優(yōu)化策略以及一些更佳實(shí)踐,以幫助開發(fā)人員更好地在Android平臺(tái)下實(shí)現(xiàn)數(shù)據(jù)庫的存取與處理。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、安定網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為安定等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、Android平臺(tái)下的SQLite數(shù)據(jù)庫的使用方法

在Android平臺(tái)下,目前內(nèi)嵌的數(shù)據(jù)庫系統(tǒng)為SQLite。SQLite是一個(gè)輕量級(jí)的關(guān)系型數(shù)據(jù)庫,是Android系統(tǒng)存儲(chǔ)數(shù)據(jù)的標(biāo)配,其具有占用資源低、無需服務(wù)器、靈活處理數(shù)據(jù)等特點(diǎn)。雖然SQLite作為一個(gè)關(guān)系型數(shù)據(jù)庫,但其使用不需要編寫一百行以上的代碼,而且使用不受語言限制,不管是Java、C++、C#還是其它編程語言都可以輕松使用上。

以下是一個(gè)Android應(yīng)用中SQLite數(shù)據(jù)庫實(shí)現(xiàn)相關(guān)的基本步驟:

1.定義數(shù)據(jù)庫類。SQLiteOpenHelper類是SQLite的幫助工具。定義數(shù)據(jù)庫類需要繼承SQLiteOpenHelper。

2.定義數(shù)據(jù)表,包括表名、列名和數(shù)據(jù)類型等。

3.實(shí)現(xiàn)數(shù)據(jù)庫的打開、關(guān)閉功能,以及基本的增、刪、改、查功能。

下面以一個(gè)簡單的例子為例來講解SQLite數(shù)據(jù)的存儲(chǔ):

1.定義數(shù)據(jù)庫類

SQLiteOpenHelper是Android SDK中以SQLite為基礎(chǔ)實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)輔助類,它封裝了SQLiteDatabase對象的創(chuàng)建與升級(jí)之間的操作。SQLiteOpenHelper的使用需要繼承該類,然后用super()方法調(diào)用基類構(gòu)造器以創(chuàng)建一個(gè)可用的SQLiteOpenHelper對象。

public class MyDatabaseHelper extends SQLiteOpenHelper {

public static final String CREATE_BOOK = “create table Book(“

+ “id integer primary key autoincrement,”

+ “cursor text,”

+ “price real,”

+ “pages integer,”

+ “name text)”;

// 構(gòu)造函數(shù),傳入context、數(shù)據(jù)庫名、游標(biāo)工廠、版本號(hào)。

public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {

super(context, name, factory, version);

}

// 創(chuàng)建數(shù)據(jù)庫回調(diào)事件

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(CREATE_BOOK);

}

// 升級(jí)數(shù)據(jù)庫回調(diào)事件

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

2.定義數(shù)據(jù)表

數(shù)據(jù)表是用來存放與應(yīng)用相關(guān)的數(shù)據(jù)的,區(qū)別于SQL語法中的數(shù)據(jù)表,SQLite數(shù)據(jù)表中是沒有指定數(shù)據(jù)類型的,它默認(rèn)會(huì)自動(dòng)檢測數(shù)據(jù)類型,而且該性質(zhì)使得開發(fā)人員后期內(nèi)容更新時(shí)可以無需修改數(shù)據(jù)庫中的存儲(chǔ)結(jié)構(gòu)。

CREATE_BOOK的建表語句如下:

public static final String CREATE_BOOK = “create table Book(“

+ “id integer primary key autoincrement,”

+ “cursor text,” // 書名

+ “price real,” // 價(jià)格

+ “pages integer,” // 頁數(shù)

+ “name text)”;

3.實(shí)現(xiàn)數(shù)據(jù)庫的打開、關(guān)閉功能,以及基本的增、刪、改、查功能。

插入數(shù)據(jù)的實(shí)現(xiàn):

// 向目標(biāo)表插入數(shù)據(jù)

public void insert() {

SQLiteDatabase db = mMyDatabaseHelper.getWritableDatabase();

ContentValues values = new ContentValues();

// 開始組裝之一條數(shù)據(jù)

values.put(“name”, “之一行代碼”);

values.put(“cursor”, “郭霖”);

values.put(“pages”, 500);

values.put(“price”, 90.8);

db.insert(“Book”, null, values); // 插入數(shù)據(jù)

// 開始組裝第二條數(shù)據(jù)

values.clear();

values.put(“name”, “安卓群英傳”);

values.put(“cursor”, “任玉剛”);

values.put(“pages”, 600);

values.put(“price”, 100);

db.insert(“Book”, null, values);// 插入數(shù)據(jù)

// 關(guān)閉數(shù)據(jù)庫

db.close();

}

刪除數(shù)據(jù):

// 刪除一定價(jià)格以上的數(shù)據(jù)

public void delete() {

SQLiteDatabase db = mMyDatabaseHelper.getWritableDatabase();

db.delete(“Book”, “price > ?”, new String[]{“100”});

db.close();

}

更新數(shù)據(jù):

// 更新書名為”one day”的數(shù)據(jù)

public void update() {

SQLiteDatabase db = mMyDatabaseHelper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(“name”, “one day”);

db.update(“Book”, values, “name = ?”, new String[]{“之一行代碼”});

db.close();

}

查詢數(shù)據(jù):

// 查詢所有數(shù)據(jù)

public void query() {

SQLiteDatabase db = mMyDatabaseHelper.getWritableDatabase();

// 查詢Book表的所有數(shù)據(jù)

Cursor cursor = db.query(“Book”, null, null, null, null, null, null);

if (cursor.moveToFirst()) {

do {

// 遍歷Cursor對象,取出數(shù)據(jù)并打印

String name = cursor.getString(cursor.getColumnIndex(“name”));

String author = cursor.getString(cursor.getColumnIndex(“cursor”));

int pages = cursor.getInt(cursor.getColumnIndex(“pages”));

double price = cursor.getDouble(cursor.getColumnIndex(“price”));

Log.d(“MnActivity”, “book name is ” + name + ” author is ” + author

+ ” pages is ” + pages + ” price is ” + price);

} while (cursor.moveToNext());

}

cursor.close();

}

二、效率的優(yōu)化策略

在數(shù)據(jù)庫操作時(shí),我們不僅需要保證數(shù)據(jù)的準(zhǔn)確性、完整性,還需要考慮到效率問題。如何快速高效地操作數(shù)據(jù)庫呢?以下是幾個(gè)優(yōu)化策略:

1.合理的SQL語句設(shè)計(jì)。SQL語句的設(shè)計(jì)是否正確,直接影響該操作的效率的高低。因此我們需要針對不同的數(shù)據(jù)庫操作,設(shè)計(jì)出恰當(dāng)?shù)腟QL語句,以減少無用的數(shù)據(jù)查詢和降低I/O操作負(fù)荷。

2.使用事務(wù)。在執(zhí)行多個(gè)Sqlite數(shù)據(jù)操作語句時(shí),可以通過開啟事務(wù)來減少磁盤IO操作、提升操作性能。事務(wù)操作是在數(shù)據(jù)庫存儲(chǔ)系統(tǒng)中大量操作數(shù)據(jù)的優(yōu)秀例子,它對于大數(shù)據(jù)量的數(shù)據(jù)操作有著很大的作用。開發(fā)者在進(jìn)行大數(shù)據(jù)量的操作時(shí),可以使用事務(wù),將數(shù)據(jù)起來,然后一次提交,這樣可以有效的運(yùn)用資源,提高數(shù)據(jù)操作效率。

3.對數(shù)據(jù)量較大的字段建立索引。索引是一種特定順序排列的數(shù)據(jù)結(jié)構(gòu),它可以快速定位到表中的特定行。對數(shù)據(jù)量比較大的字段建立索引可以極大的提高數(shù)據(jù)庫的查詢速度。但是建索引也會(huì)帶來一定的資源和性能損耗,索引會(huì)占用一定的空間,并且當(dāng)數(shù)據(jù)量增加時(shí),更新查詢的代價(jià)也會(huì)變得越來越大。

三、更佳實(shí)踐

針對Android平臺(tái)下的數(shù)據(jù)庫操作更佳實(shí)踐如下:

1.不在UI線程中進(jìn)行數(shù)據(jù)庫操作。所有的數(shù)據(jù)庫操作都需要在子線程中進(jìn)行。因?yàn)槿绻赨I線程中進(jìn)行,這樣會(huì)導(dǎo)致主線程被堵塞,從而造成UI卡頓,影響用戶的交互體驗(yàn)。

2.不要忘記關(guān)閉數(shù)據(jù)庫。在操作完成后及時(shí)關(guān)閉數(shù)據(jù)庫,這樣可以釋放相關(guān)資源,避免出現(xiàn)數(shù)據(jù)泄漏。

3.關(guān)于多線程操作。在多線程操作時(shí),每個(gè)線程都需要?jiǎng)?chuàng)建自己的單例SQLiteOpenHelper實(shí)例對象,這樣才能保證在多線程環(huán)境下數(shù)據(jù)庫的操作是安全的。如果多個(gè)線程在同一實(shí)例中操作數(shù)據(jù)庫,會(huì)在并發(fā)時(shí)發(fā)生錯(cuò)誤。

通過本文的介紹,相信大家能夠更好的了解到在Android平臺(tái)下的SQLite數(shù)據(jù)庫操作的方法與技巧。在日常的應(yīng)用開發(fā)中,良好的數(shù)據(jù)庫操作習(xí)慣應(yīng)該是我們很好的應(yīng)用之一。當(dāng)要處理大量的數(shù)據(jù)時(shí),我們需要注意的是優(yōu)化策略,使用一些高效的語句,避免頻繁出現(xiàn)sql查詢動(dòng)作,并開啟事務(wù)操作加速數(shù)據(jù)庫數(shù)據(jù)插入的動(dòng)作。最后嚴(yán)格按照更佳實(shí)踐操作,可以讓我們的程序更加健壯,性能得到更好的提升。

相關(guān)問題拓展閱讀:

  • android 數(shù)據(jù)庫存什么數(shù)據(jù)

android 數(shù)據(jù)庫存什么數(shù)據(jù)

輕量數(shù)據(jù)!輕量數(shù)據(jù)!輕量數(shù)據(jù)!切記

android數(shù)據(jù)庫是一個(gè)輕量級(jí)數(shù)據(jù)庫sqlite。我以前測試過,數(shù)據(jù)量大扮洞于3000條的時(shí)候查詢會(huì)有明顯延遲,甚至?xí)罎ⅰ?/p>

所以,一般會(huì)存儲(chǔ)類好型似于用友缺猜戶信息,簡單的log,版本信息。你可以用電腦連接android手機(jī),然后用sqlite命令行工具訪問手機(jī)里的數(shù)據(jù)庫,看看主流app都存了什么。

android開發(fā)中sqlite3支持的數(shù)據(jù)類型:

NULL、INTEGER、REAL、TEXT、BLOB

但是,sqlite3也支持如下的數(shù)據(jù)類型

allint位整數(shù)

integer2位整數(shù)

decimal(p,s) p是精確值,s是小數(shù)位數(shù)

float 32位實(shí)數(shù)

double4位實(shí)數(shù)

char(n)n長度字符串,不能超過254

varchar(n)長度不固定更大字符汪租含串長度為n,n不超過4000

graphic(n)和 char(n) 一樣,但是單位是兩個(gè)字符double-bytes,n不超過127(中文字)

vargraphic(n) 可變長型數(shù)度且更大長困笑度為n

date 包含了年份、月份、日期

time 包含了小時(shí)、分鐘、秒

timestamp包含了年、月、日、時(shí)、分、秒、千分之一秒

android 下數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于android 下數(shù)據(jù)庫,Android數(shù)據(jù)庫:存取數(shù)據(jù)的終極指南,android 數(shù)據(jù)庫存什么數(shù)據(jù)的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


本文名稱:Android數(shù)據(jù)庫:存取數(shù)據(jù)的終極指南(android下數(shù)據(jù)庫)
當(dāng)前路徑:http://www.5511xx.com/article/dphggci.html