新聞中心
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


咨詢
建站咨詢
