日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

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

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

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

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

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

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

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

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

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

SQLiteOpenHelper是Android SDK中以SQLite為基礎(chǔ)實現(xiàn)的數(shù)據(jù)存儲輔助類,它封裝了SQLiteDatabase對象的創(chuàng)建與升級之間的操作。SQLiteOpenHelper的使用需要繼承該類,然后用super()方法調(diào)用基類構(gòu)造器以創(chuàng)建一個可用的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ù)庫名、游標工廠、版本號。

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);

}

// 升級數(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ù)類型的,它默認會自動檢測數(shù)據(jù)類型,而且該性質(zhì)使得開發(fā)人員后期內(nèi)容更新時可以無需修改數(shù)據(jù)庫中的存儲結(jié)構(gòu)。

CREATE_BOOK的建表語句如下:

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

+ “id integer primary key autoincrement,”

+ “cursor text,” // 書名

+ “price real,” // 價格

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

+ “name text)”;

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

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

// 向目標表插入數(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ù):

// 刪除一定價格以上的數(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ù)據(jù)的準確性、完整性,還需要考慮到效率問題。如何快速高效地操作數(shù)據(jù)庫呢?以下是幾個優(yōu)化策略:

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

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

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

三、更佳實踐

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

1.不在UI線程中進行數(shù)據(jù)庫操作。所有的數(shù)據(jù)庫操作都需要在子線程中進行。因為如果在UI線程中進行,這樣會導致主線程被堵塞,從而造成UI卡頓,影響用戶的交互體驗。

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

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

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

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

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

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

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

android數(shù)據(jù)庫是一個輕量級數(shù)據(jù)庫sqlite。我以前測試過,數(shù)據(jù)量大扮洞于3000條的時候查詢會有明顯延遲,甚至會崩潰。

所以,一般會存儲類好型似于用友缺猜戶信息,簡單的log,版本信息。你可以用電腦連接android手機,然后用sqlite命令行工具訪問手機里的數(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ù)

double4位實數(shù)

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

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

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

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

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

time 包含了小時、分鐘、秒

timestamp包含了年、月、日、時、分、秒、千分之一秒

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

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


文章題目:Android數(shù)據(jù)庫:存取數(shù)據(jù)的終極指南(android下數(shù)據(jù)庫)
當前網(wǎng)址:http://www.dlmjj.cn/article/dphggci.html