新聞中心
Android平臺(tái)上的應(yīng)用程序開發(fā)離不開數(shù)據(jù)庫(kù)的支持,數(shù)據(jù)庫(kù)的操作不僅是應(yīng)用程序運(yùn)行的核心,準(zhǔn)確無(wú)誤的操作也直接影響著程序的性能和用戶體驗(yàn)。在Android開發(fā)中,為了提高開發(fā)效率,開發(fā)者們經(jīng)常使用數(shù)據(jù)庫(kù)操作的封裝類來簡(jiǎn)化操作,減少冗余代碼,以下介紹一種android數(shù)據(jù)庫(kù)操作封裝類,可以讓開發(fā)者更好的體驗(yàn)數(shù)據(jù)庫(kù)操作。

成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元孝感做網(wǎng)站,已為上家服務(wù),為孝感各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
一、封裝類的介紹
這種封裝類是基于Android平臺(tái)中的Sqlite數(shù)據(jù)庫(kù)實(shí)現(xiàn)的,它能夠簡(jiǎn)化Sqlite的操作,實(shí)現(xiàn)代碼復(fù)用,提高開發(fā)效率。使用這種封裝類可以避免常見的錯(cuò)誤,比如Sql注入攻擊等。可以支持多線程操作,避免多線程同步問題。
二、使用方法
1. 添加依賴
在Android項(xiàng)目的build.gradle中添加如下依賴:
“`
dependencies {
implementation ‘com.lib.databasehelper:dbhelper:1.0.0’
}
“`
2. 初始化
在Application的onCreate方法中,進(jìn)行數(shù)據(jù)庫(kù)的初始化:
“`
DbHelper.init(this, “database.db”);
“`
3. 創(chuàng)建表
在需要?jiǎng)?chuàng)建表的Activity或者Fragment中,通過繼承DbTable來創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)表,比如下面的示例代碼:
“`
public class OrderTable extends DbTable {
public OrderTable(SQLiteDatabase db) {
super(db);
}
@Override
protected void onCreate() {
createTable(“Order”, new String[]{
“_id INTEGER PRIMARY KEY AUTOINCREMENT”,
“name TEXT NOT NULL”,
“price REAL NOT NULL”
});
}
}
“`
這段代碼創(chuàng)建了一個(gè)名為Order的表,包括_id、name、price三個(gè)字段,其中_id為自增長(zhǎng)的主鍵,其他兩個(gè)字段都不能為空。
4. 數(shù)據(jù)的增刪改查
數(shù)據(jù)的增刪改查可以直接調(diào)用封裝類DbManager的相應(yīng)方法,比如插入一條數(shù)據(jù)的示例代碼:
“`
ContentValues values = new ContentValues();
values.put(“name”, “test”);
values.put(“price”, 3.0);
DbManager.getInstance().insert(“Order”, values);
“`
查詢所有數(shù)據(jù)的示例代碼:
“`
Cursor cursor = DbManager.getInstance().query(“Order”, null, null, null, null, null, null, null);
List orderList = new ArrayList();
while (cursor.moveToNext()) {
Order order = new Order();
order.setId(cursor.getInt(cursor.getColumnIndex(“_id”)));
order.setName(cursor.getString(cursor.getColumnIndex(“name”)));
order.setPrice(cursor.getFloat(cursor.getColumnIndex(“price”)));
orderList.add(order);
}
“`
5. 數(shù)據(jù)庫(kù)升級(jí)
當(dāng)數(shù)據(jù)庫(kù)需要升級(jí)時(shí),需要對(duì)新增和刪除的表和列進(jìn)行相應(yīng)的處理,可以通過繼承DbUpgrade來實(shí)現(xiàn)。
“`
public class MyAppDbUpgrade extends DbUpgrade {
public MyAppDbUpgrade(int oldVersion, int newVersion) {
super(oldVersion, newVersion);
}
@Override
public void onUpgrade(SQLiteDatabase db) {
if (oldVersion == 1 && newVersion == 2) {
db.execSQL(“ALTER TABLE Order ADD COLUMN description TEXT”);
}
}
}
“`
這段代碼實(shí)現(xiàn)了數(shù)據(jù)庫(kù)從版本1升級(jí)到版本2時(shí),給Order表添加description字段。
三、優(yōu)點(diǎn)
1. 代碼復(fù)用性高,可以減少冗余代碼,避免代碼重復(fù);
2. 操作簡(jiǎn)單,使用方法簡(jiǎn)潔明了,規(guī)范化了數(shù)據(jù)庫(kù)的操作流程;
3. 可以有效的避免Sql注入等攻擊問題,提高數(shù)據(jù)的安全性;
4. 封裝類本身可以支持多線程操作,避免多線程同步問題;
5. 支持多個(gè)表和多個(gè)升級(jí)操作,可以實(shí)現(xiàn)更復(fù)雜的數(shù)據(jù)庫(kù)操作。
四、
相關(guān)問題拓展閱讀:
- android開發(fā) 數(shù)據(jù)庫(kù)的使用
android開發(fā) 數(shù)據(jù)庫(kù)的使用
SQLite是輕量級(jí)嵌入式數(shù)據(jù)庫(kù)引擎,它支持 SQL 語(yǔ)言,并且只利用很少的內(nèi)存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項(xiàng)目((Mozilla, PHP, Python)都使用了 SQLite,SQLite 由以下幾個(gè)組件組成:SQL 編譯器、內(nèi)核、后端以及附件。SQLite 通過利用虛擬機(jī)和虛擬數(shù)據(jù)庫(kù)引擎(VDBE),使調(diào)試、修改和擴(kuò)展 SQLite 的內(nèi)核變得更加方便。
特點(diǎn):
面向資源有限的設(shè)備, 沒有服務(wù)器進(jìn)程, 所有數(shù)據(jù)存放在同一文件中跨平臺(tái),可自由復(fù)制。
SQLite 基本上符合 SQL-92 標(biāo)準(zhǔn),和其他的主要 SQL 數(shù)據(jù)庫(kù)沒什么區(qū)別。它的優(yōu)點(diǎn)就是高效,Android 運(yùn)行時(shí)環(huán)境包含了完整的 SQLite。
SQLite 和其他數(shù)據(jù)庫(kù)更大的不同就是對(duì)數(shù)據(jù)類型的支持,創(chuàng)建一個(gè)表時(shí),可以在 CREATE TABLE 語(yǔ)句中指定某列的數(shù)據(jù)類型,但是你可以把任何數(shù)據(jù)類型放入任何列中。當(dāng)某個(gè)值插入數(shù)據(jù)庫(kù)時(shí),SQLite 將檢查它的類型。如果該類型與關(guān)聯(lián)的列不匹配,則 SQLite 會(huì)嘗試將該值轉(zhuǎn)換成該列的類型。如果不能轉(zhuǎn)換,則該值將作為其本身具有的類型存儲(chǔ)。比如可以把一個(gè)字符串(String)放入 INTEGER 列。SQLite 稱這為“弱類型”(manifest typing.)。 此外,SQLite 不支持一些標(biāo)準(zhǔn)的 SQL 功能,特別是外鍵約束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 還有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一個(gè)完整的 SQL 系統(tǒng),擁有完整的觸發(fā)器,交易等等。
Android 集成了 SQLite 數(shù)據(jù)庫(kù) Android 在運(yùn)行時(shí)(run-time)集成了 SQLite,所以每個(gè) Android 應(yīng)用程序都可以使用 SQLite 數(shù)據(jù)庫(kù)。
對(duì)于熟悉 SQL 的開發(fā)人員來時(shí),在 Android 開發(fā)中使用 SQLite 相當(dāng)簡(jiǎn)單。但是,由于 JDBC 會(huì)消耗太多的系統(tǒng)資源,所以 JDBC 對(duì)于手機(jī)這種內(nèi)存受限設(shè)備來說并不合適。因此,Android 提供了一些新的 API 來使用 SQLite 數(shù)據(jù)庫(kù),Android 開發(fā)中,程序員需要學(xué)使用這些 API。
數(shù)據(jù)庫(kù)存儲(chǔ)在 data//databases/ 下。 Android 開發(fā)中使用 SQLite 數(shù)據(jù)庫(kù) Activites 可以通過 Content Provider 或者 Service 訪問一個(gè)數(shù)據(jù)庫(kù)。
下面會(huì)詳細(xì)講解如果創(chuàng)建數(shù)據(jù)庫(kù),添加數(shù)據(jù)和查詢數(shù)據(jù)庫(kù)。 創(chuàng)建數(shù)據(jù)庫(kù) Android 不自動(dòng)提供數(shù)據(jù)庫(kù)。在 Android 應(yīng)用程序中使用 SQLite,必須自己創(chuàng)建數(shù)據(jù)庫(kù),然后創(chuàng)建表、索引,填充數(shù)據(jù)。
Android 提供了 SQLiteOpenHelper 幫助你創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),你只要繼承 SQLiteOpenHelper 類,就可以輕松的創(chuàng)建數(shù)據(jù)庫(kù)。SQLiteOpenHelper 類根據(jù)開發(fā)應(yīng)用程序的需要,封裝了創(chuàng)建和更新數(shù)據(jù)庫(kù)使用的邏輯。
SQLiteOpenHelper 的子類,至少需要實(shí)現(xiàn)三個(gè)方法:
1 構(gòu)造函數(shù),調(diào)用父類 SQLiteOpenHelper 的構(gòu)造函數(shù)。這個(gè)方法需要四個(gè)參數(shù):上下文環(huán)境(例如,一個(gè) Activity),數(shù)據(jù)庫(kù)名字,一個(gè)可選的游標(biāo)工廠(通常是 Null),一個(gè)代表你正在使用的數(shù)據(jù)庫(kù)模型版本的整數(shù)。
2 onCreate()方法,它需要一個(gè) SQLiteDatabase 對(duì)象作為參數(shù),根據(jù)需要對(duì)這個(gè)對(duì)象填充表和初始化數(shù)據(jù)。
3 onUpgrage() 方法,它需要三個(gè)參數(shù),一個(gè) SQLiteDatabase 對(duì)象,一個(gè)舊的版本號(hào)和一個(gè)新的版本號(hào),這樣你就可以清楚如何把一個(gè)數(shù)據(jù)庫(kù)從舊的模型轉(zhuǎn)變到新的模型。
android數(shù)據(jù)庫(kù)操作封裝類的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于android數(shù)據(jù)庫(kù)操作封裝類,Android數(shù)據(jù)庫(kù)操作封裝類:更好的開發(fā)體驗(yàn),android開發(fā) 數(shù)據(jù)庫(kù)的使用的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
分享文章:Android數(shù)據(jù)庫(kù)操作封裝類:更好的開發(fā)體驗(yàn)(android數(shù)據(jù)庫(kù)操作封裝類)
鏈接地址:http://m.5511xx.com/article/dpodded.html


咨詢
建站咨詢
