新聞中心
隨著移動互聯(lián)網(wǎng)時代的到來,移動設(shè)備已然成為人們?nèi)粘J褂米铑l繁的終端設(shè)備之一,為了更好地滿足用戶日益增長的數(shù)據(jù)存儲需求,Android系統(tǒng)提供的本地數(shù)據(jù)庫幫助開發(fā)者在設(shè)備存儲中安全地存儲和檢索數(shù)據(jù),成為了移動應(yīng)用程序構(gòu)建的必要組件之一。本文將對Android本地數(shù)據(jù)庫進行詳細介紹和探究,以及實現(xiàn)一個簡單的本地數(shù)據(jù)庫應(yīng)用程序。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供安陽網(wǎng)站建設(shè)、安陽做網(wǎng)站、安陽網(wǎng)站設(shè)計、安陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、安陽企業(yè)網(wǎng)站模板建站服務(wù),十年安陽做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
一、Android本地數(shù)據(jù)庫介紹
Android系統(tǒng)提供了SQLite數(shù)據(jù)庫引擎作為其默認的本地數(shù)據(jù)庫管理系統(tǒng)。SQLite是一個輕量級的嵌入式數(shù)據(jù)庫引擎,在智能手機、平板電腦等移動設(shè)備上廣泛應(yīng)用。與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫相比,SQLite具有小巧、速度快、易使用等特點。SQLite可以直接在Android設(shè)備本地存儲中創(chuàng)建和管理數(shù)據(jù)庫,并提供了包括Insert、Delete、Update、Select等基本數(shù)據(jù)庫操作。而在Android中,使用SQLite數(shù)據(jù)庫主要通過SQLiteOpenHelper和SQLiteDatabase兩個API類實現(xiàn)。
二、Android本地數(shù)據(jù)庫構(gòu)成
Android本地數(shù)據(jù)庫主要由以下幾個部分組成:
1、數(shù)據(jù)庫:存儲數(shù)據(jù)的物理容器,由表、視圖、索引等多個部分組成。
2、表:數(shù)據(jù)庫中數(shù)據(jù)存儲的最小單位,由多個字段組成,每個字段對應(yīng)一列,每行數(shù)據(jù)代表一條記錄。
3、字段:每個字段對應(yīng)表中的一列,用來存儲數(shù)據(jù)。
4、記錄:表中存儲的數(shù)據(jù)行,由多個字段組成。
5、SQL語句:用來在數(shù)據(jù)庫中進行數(shù)據(jù)操作的語言,包括創(chuàng)建表、增加字段、添加記錄、修改記錄、查詢記錄等多種操作。
6、SQLiteOpenHelper:提供了管理SQLite數(shù)據(jù)庫的功能,如創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、更新數(shù)據(jù)庫等。
7、SQLiteDatabase:提供了對數(shù)據(jù)庫的增刪改查等操作,是SQLiteOpenHelper實現(xiàn)的基礎(chǔ)類。
三、Android本地數(shù)據(jù)庫的使用
Android本地數(shù)據(jù)庫的使用主要涉及到以下幾個關(guān)鍵步驟:
1、創(chuàng)建數(shù)據(jù)庫和表結(jié)構(gòu)
通過SQLiteOpenHelper創(chuàng)建數(shù)據(jù)庫和表結(jié)構(gòu),包括創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表,建立索引等操作。
2、插入數(shù)據(jù)
可通過SQLiteDatabase實現(xiàn)表中數(shù)據(jù)插入,插入數(shù)據(jù)之前需確保相應(yīng)表已經(jīng)存在。
3、更新數(shù)據(jù)
可通過SQLiteDatabase實現(xiàn)對表中數(shù)據(jù)的修改,需先通過查詢找到對應(yīng)記錄,再進行更新操作。
4、查詢數(shù)據(jù)
可通過SQLiteDatabase實現(xiàn)表中數(shù)據(jù)的查詢,可使用基本的SQL語句,如SELECT語句,根據(jù)需求查詢相關(guān)數(shù)據(jù)。
5、刪除數(shù)據(jù)
可通過SQLiteDatabase實現(xiàn)刪除表中指定的數(shù)據(jù),需先通過查詢找到對應(yīng)記錄,再進行刪除操作。
6、管理數(shù)據(jù)庫
通過SQLiteOpenHelper提供的API可實現(xiàn)升級、備份和還原等高級數(shù)據(jù)庫管理操作。
四、Android本地數(shù)據(jù)庫應(yīng)用程序?qū)崿F(xiàn)
接下來代碼基于Android Studio開發(fā)環(huán)境中進行,具體步驟如下:
1、打開Android Studio,點擊“Create New Project”創(chuàng)建一個新工程。
2、選擇“Empty Activity”,并命名為“DatabaseDemo”。
3、在代碼中添加SQLiteOpenHelper類,并完成數(shù)據(jù)庫創(chuàng)建和管理的初始化操作。
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “mydatabase.db”;
private static final int DATABASE_VERSION = 1;
private static final String CREATE_TABLE = “create table test(_id integer primary key autoincrement,” + “name text not null);”;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
4、在MnActivity中添加視圖控件,并通過數(shù)據(jù)庫插入、查詢、刪除等操作展示相關(guān)功能。
public class MnActivity extends AppCompatActivity {
private EditText etName;
private Button btnAdd;
private Button btnDelete;
private Button btnQuery;
private TextView tvResult;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mn);
etName = (EditText) findViewById(R.id.et_name);
btnAdd = (Button) findViewById(R.id.btn_add);
btnDelete = (Button) findViewById(R.id.btn_delete);
btnQuery = (Button) findViewById(R.id.btn_query);
tvResult = (TextView) findViewById(R.id.tv_result);
DatabaseHelper dbHelper = new DatabaseHelper(this);
db = dbHelper.getWritableDatabase();
}
public void onAdd(View view) {
ContentValues values = new ContentValues();
values.put(“name”, etName.getText().toString());
db.insert(“test”, null, values);
}
public void onDelete(View view) {
db.delete(“test”, “name=?”, new String[]{etName.getText().toString()});
}
public void onQuery(View view) {
Cursor cursor = db.query(“test”, null, null, null, null, null, null);
StringBuilder = new StringBuilder();
while (cursor.moveToNext()) {
int _id = cursor.getInt(cursor.getColumnIndex(“_id”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
.append(“_id=”).append(_id).append(“, name=”).append(name).append(“\n”);
}
tvResult.setText(.toString());
}
}
五、
通過以上探究和介紹,我們可以知道Android本地數(shù)據(jù)庫提供了強大的數(shù)據(jù)庫管理和操作功能,可以幫助我們輕松地構(gòu)建移動應(yīng)用程序。而更深層次的數(shù)據(jù)庫性能優(yōu)化和數(shù)據(jù)管理需求仍需開發(fā)者進一步探究和實踐。
相關(guān)問題拓展閱讀:
- 數(shù)據(jù)庫分析的原理是什么?
- 如何Android數(shù)據(jù)庫緩存進行管理
數(shù)據(jù)庫分析的原理是什么?
數(shù)據(jù)庫系統(tǒng)的基本概念
數(shù)據(jù):實際上就是描述事物的符號記錄。
數(shù)據(jù)的特點:有一定的結(jié)構(gòu),有型與值之分,如整型、實型、字符型等。而數(shù)據(jù)的值給出了符合定型的值,如整型值15。
數(shù)據(jù)庫:是數(shù)據(jù)的,具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序共享。
數(shù)據(jù)庫存放數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,具有集成與共享的特點。
數(shù)據(jù)庫管理系統(tǒng):一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等,是數(shù)據(jù)庫的核心。
數(shù)據(jù)庫管理系統(tǒng)功能:
(1)數(shù)據(jù)模式定義:即為數(shù)據(jù)庫構(gòu)建其數(shù)據(jù)框架;
(2)數(shù)據(jù)存取的物理構(gòu)建:為數(shù)據(jù)模式的物理存取與構(gòu)建提供有效的存取方法與手段;
(3)數(shù)據(jù)操縱:為用戶使用數(shù)據(jù)庫的數(shù)據(jù)提供方便,如查詢、插入、修改、刪除等以及簡單的算術(shù)運算及統(tǒng)計;
(4)數(shù)據(jù)的完整性、安生性定義與檢查;
(5)數(shù)據(jù)庫的并發(fā)控制與故障恢復(fù);
(6)數(shù)據(jù)的服務(wù):如拷貝、轉(zhuǎn)存、重組、性能監(jiān)測、分析等。
為完成以上六個功能,數(shù)據(jù)庫管理系統(tǒng)提供以下的數(shù)據(jù)語言:
(1)數(shù)據(jù)定義語言:負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;
(2)數(shù)據(jù)操縱語言:負責數(shù)據(jù)的操縱,如查詢與增、刪、改等;
(3)數(shù)據(jù)控制語言:負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等。
數(shù)據(jù)語言按其使用方式具有兩種結(jié)構(gòu)形式:交互式命令(又稱自含型或自主型語言)宿主型語言(一般可嵌入某些宿主語言中)戚缺。
數(shù)據(jù)庫管理員:對數(shù)據(jù)庫進行規(guī)劃、設(shè)計、維護、監(jiān)視等的專業(yè)管理人員。
數(shù)據(jù)庫系統(tǒng):由數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、硬件平臺(硬件)、軟件平臺(軟件)五個部分構(gòu)成的運行實體。
數(shù)據(jù)庫應(yīng)用系統(tǒng):由數(shù)據(jù)庫系統(tǒng)、應(yīng)用軟件及應(yīng)用界面三者組成。
文件系統(tǒng)階段:提供了簡單的數(shù)據(jù)共享與數(shù)據(jù)管理能力,但是它無法提供完整的、統(tǒng)一的、管理和數(shù)據(jù)共享的能力。
層次數(shù)據(jù)庫與網(wǎng)狀數(shù)據(jù)庫系統(tǒng)階段 :為統(tǒng)一與共享數(shù)據(jù)提供了有力支撐。
關(guān)系數(shù)據(jù)庫系統(tǒng)階段
數(shù)據(jù)庫系統(tǒng)的基本特點:數(shù)據(jù)的集成性 、數(shù)據(jù)的高共享性與低冗余性 、數(shù)據(jù)獨立性(物理獨立性與邏輯獨立性)、數(shù)據(jù)統(tǒng)一管理與控制。
數(shù)據(jù)庫系統(tǒng)的三級模式:
(1)概念模式:數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,全體用戶公共數(shù)據(jù)視圖;
(2)外模式:也稱子模式與用戶模式。是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;
(3)內(nèi)模式:又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。
數(shù)據(jù)庫系統(tǒng)的兩級映射:
(1)概念模式到內(nèi)模式的映射;
(2)外模式到概念模式的映射。
4.2 數(shù)據(jù)模型
數(shù)據(jù)模型的概念:是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表與操作提供一個抽象的框架。描述了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作及數(shù)據(jù)約束。
E-R模型的基本概念
(1)實體:現(xiàn)實世界中的事物;
(2)屬性:事物的特性;
(3)聯(lián)系:現(xiàn)實世界中事物間的關(guān)系。實體集的關(guān)系有一對一、一對多、多對多的聯(lián)系。
E-R模型三個基本概念之間的聯(lián)接關(guān)系:實體是概念世界中的基本單位,屬性有屬性域,每個實體可取屬性域內(nèi)的值。一個實體的所有屬性值叫元組。
E-R模型的圖示法:(1)實體集表示法; (2)屬性表法; (3)聯(lián)系表示法。
層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),具有以下特點:
(1)每棵樹有且僅有一個無雙親結(jié)點,稱為根;
(2)樹中除根外所有結(jié)點有且僅有一個雙親。
從圖論上看,網(wǎng)狀模型是一個不加任何條件限制的無向圖。
關(guān)系模型采用二維表來表示,簡稱表,由表框架及表的元組組成。一個二維表就是一個關(guān)系。
在二維表中凡能唯一標識元組的最小屬性稱為鍵或碼。從所有侯選健中簡仔賀選取一個作為用戶使用的鍵稱主鍵。表A中的某屬性是某表B的鍵,則稱該屬性集為A的外鍵或外碼。
關(guān)系中的數(shù)據(jù)約束:
(1)實體完整性約束:約束關(guān)系的主鍵中屬攔派性值不能為空值;
(2)參照完全性約束:是關(guān)系之間的基本約束;
(3)用戶定義的完整性約束:它反映了具體應(yīng)用中數(shù)據(jù)的語義要求。
4.3關(guān)系代數(shù)
關(guān)系數(shù)據(jù)庫系統(tǒng)的特點之一是它建立在數(shù)據(jù)理論的基礎(chǔ)之上,有很多數(shù)據(jù)理論可以表示關(guān)系模型的數(shù)據(jù)操作,其中最為著名的是關(guān)系代數(shù)與關(guān)系演算。
關(guān)系模型的基本運算:
(1)插入 (2)刪除 (3)修改 (4)查詢(包括投影、選擇、笛卡爾積運算)
4.4 數(shù)據(jù)庫設(shè)計與管理
數(shù)據(jù)庫設(shè)計是數(shù)據(jù)應(yīng)用的核心。
數(shù)據(jù)庫設(shè)計的兩種方法:
(1)面向數(shù)據(jù):以信息需求為主,兼顧處理需求;
(2)面向過程:以處理需求為主,兼顧信息需求。
數(shù)據(jù)庫的生命周期:需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、編碼階段、測試階段、運行階段、進一步修改階段。
需求分析常用結(jié)構(gòu)析方法和面向?qū)ο蟮姆椒?。結(jié)構(gòu)化分析(簡稱SA)方法用自頂向下、逐層分解的方式分析系統(tǒng)。用數(shù)據(jù)流圖表達數(shù)據(jù)和處理過程的關(guān)系。對數(shù)據(jù)庫設(shè)計來講,數(shù)據(jù)字典是進行詳細的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果。
數(shù)據(jù)字典是各類數(shù)據(jù)描述的,包括5個部分:數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流(可以是數(shù)據(jù)項,也可以是數(shù)據(jù)結(jié)構(gòu))、數(shù)據(jù)存儲、處理過程。
數(shù)據(jù)庫概念設(shè)計的目的是分析數(shù)據(jù)內(nèi)在語義關(guān)系。設(shè)計的方法有兩種
(1)集中式模式設(shè)計法(適用于小型或并不復(fù)雜的單位或部門);
(2)視圖集成設(shè)計法。
設(shè)計方法:E-R模型與視圖集成。
視圖設(shè)計一般有三種設(shè)計次序:自頂向下、由底向上、由內(nèi)向外。
視圖集成的幾種沖突:命名沖突、概念沖突、域沖突、約束沖突。
關(guān)系視圖設(shè)計:關(guān)系視圖的設(shè)計又稱外模式設(shè)計。
關(guān)系視圖的主要作用:
(1)提供數(shù)據(jù)邏輯獨立性;
(2)能適應(yīng)用戶對數(shù)據(jù)的不同需求;
(3)有一定數(shù)據(jù)保密功能。
數(shù)據(jù)庫的物理設(shè)計主要目標是對數(shù)據(jù)內(nèi)部物理結(jié)構(gòu)作調(diào)整并選擇合理的存取路徑,以提高數(shù)據(jù)庫訪問速度有效利用存儲空間。一般RDBMS中留給用戶參與物理設(shè)計的內(nèi)容大致有索引設(shè)計、集成簇設(shè)計和分區(qū)設(shè)計。
數(shù)據(jù)庫管理的內(nèi)容:
(1)數(shù)據(jù)庫的建立;
(2)數(shù)據(jù)庫的調(diào)整;
(3)數(shù)據(jù)庫的重組;
(4)數(shù)據(jù)庫安全性與完整性控制;
(5)數(shù)據(jù)庫的故障恢復(fù);
(6)數(shù)據(jù)庫監(jiān)控。
如何Android數(shù)據(jù)庫緩存進行管理
無論大型或小型應(yīng)用,靈活的緩存可以說不僅大大減輕了服務(wù)器的壓力,而且因為更快速的用戶體驗而方便了用戶。
Android的apk可以說是作為小型應(yīng)用,其中99%的應(yīng)用并不是需要實時更新的,而且詬病于蝸牛般的移動網(wǎng)速,與服務(wù)器的數(shù)據(jù)交互是能少則少,這樣用戶體驗才更好,這也是我們有時舍棄webview而采用json傳輸數(shù)據(jù)的原因之一。
采用緩存,可以進一步大大緩解數(shù)據(jù)交互的壓力,特此,我們簡略列舉一下緩存管理的適用環(huán)境:
1. 提供網(wǎng)絡(luò)服務(wù)的應(yīng)用
2. 數(shù)據(jù)更新不隱拆晌需要實時更新,但是哪怕是3-5分鐘的延遲也是可以采用緩存機制。
3. 緩存的過期時間是可以接受的(不會因為緩存帶來的好處,導(dǎo)致某些數(shù)據(jù)因為更新不及時而影響產(chǎn)品的形象等)
帶來的好處:
1. 服務(wù)器的壓力大大減小
2. 客戶端的響應(yīng)速度大大變快(用戶體驗)
3. 客戶端的數(shù)據(jù)加載出錯情況大大較少,大大提高了應(yīng)有的穩(wěn)定性(用戶體驗)
4. 一定程度上可以支持離線瀏覽(或者說為離線瀏覽提供了技術(shù)支持)
一、緩存管理的方法
這里的緩存管理的原理很簡:通過時間的設(shè)置來判斷是否讀取緩存還是重新下載。
里面會有一些細節(jié)的處理,后面會詳細闡述。
基于這個原理,目前鄙人見過的兩種比較常見的緩存管理方法是:數(shù)據(jù)庫法和文件法。
二、數(shù)據(jù)庫法緩存管理
這種方法是在下載完數(shù)據(jù)文件后,把文件的相關(guān)信息如url,路經(jīng),下載時間,過期時間等存放到數(shù)據(jù)庫,下次下載的時候根據(jù)url先從數(shù)據(jù)庫中查詢,如果查詢到當前時間并未過期,就根據(jù)路徑讀取本地文件,從而實現(xiàn)緩存的效果。
從實現(xiàn)上我們可以看到這種方法可以靈活存放文件的屬性,進而提供了很大的擴展性,可以為其它的功能提供一定的支持;
從操作上需要創(chuàng)建數(shù)據(jù)庫,每次查詢數(shù)據(jù)庫,如果過期還需要更新數(shù)據(jù)庫,清理緩存的時候還需要刪除數(shù)據(jù)庫數(shù)據(jù),稍顯麻煩,而數(shù)據(jù)庫操作不當又容易出現(xiàn)一系列的性能,ANR問題,實現(xiàn)的時候要謹慎,具體作的話,但也只是增加一個工具類或方法的事情。
還有一個問題,緩存的數(shù)據(jù)庫是存放在/data/data//databases/目錄下,是占用內(nèi)存空間的,如果緩存累計,容易浪費內(nèi)存,需要及時清理緩存。
當然這種方法從目前一些應(yīng)用的實用上看,我沒有發(fā)現(xiàn)什么問題。
本文我側(cè)重強調(diào)第二種方法,之一種方法的實現(xiàn),就此掠過。
三、文件法緩存管理
這種方法,使用File.lastModified()方法得到文件的最后修改時間,與當前時間判御衡斷是否過期,從而實現(xiàn)緩存效果。
實現(xiàn)上只能使用這一個屬性,沒有為其它的功能提供技術(shù)支持的可能。
操作上倒是簡單,比較時間即可。本身處理也不容易帶來其它問題,代價低廉。
四、文件法緩存管理的兩點說明
1. 不同類型的文件的緩存時間不一樣。
籠統(tǒng)的說,不變文件的緩存時間是永久,變化文件的緩存時間是更大忍受不變時間。
說白點,圖片文件內(nèi)容是不變的,直到清理,我們是可以永遠讀取緩存的。
配置文件內(nèi)容是可能更新的,需要設(shè)置一個可接受的緩存時間。
2. 不同環(huán)境下的緩存時間標準不一樣。
無網(wǎng)絡(luò)環(huán)境下,我們只能讀取緩存文件,哪怕緩存早就過期。
WiFi網(wǎng)絡(luò)環(huán)境下,緩存時間可以設(shè)置短一點,一是網(wǎng)速較快,而是流量不要錢。
移動數(shù)據(jù)流量環(huán)境下,緩存時間可以設(shè)置長一點,節(jié)省流量,就是節(jié)省金錢,而且用戶體驗也更好。
舉灶鋒個例子吧,最近本人在做的一個應(yīng)用在wifi環(huán)境下的緩存時間設(shè)置為5分鐘,移動數(shù)據(jù)流量下的緩存時間設(shè)置為1小時。
這個時間根據(jù)自己的實際情況來設(shè)置:數(shù)據(jù)的更新頻率,數(shù)據(jù)的重要性等。
五、何時刷新
開發(fā)者一方面希望盡量讀取緩存,用戶一方面希望實時刷新,但是成都網(wǎng)站制作響應(yīng)速度越快越好,流量消耗越少越好,是一個矛盾。
其實何時刷新我也不知道,這里我提供兩點建議:
1. 數(shù)據(jù)的最長多長時間不變,對應(yīng)用無大的影響。
比如,你的數(shù)據(jù)更新時間為1天,則緩存時間設(shè)置為4~8小時比較合適,一天他總會看到更新,如果你覺得你是資訊類應(yīng)用,再減少,2~4小時,如果你覺得數(shù)據(jù)比較重要或者比較受歡迎,用戶會經(jīng)常把玩,再減少,1~2小時,依次類推。
為了保險起見,你可能需要毫無理由的再次縮減一下。
2. 提供刷新按鈕。
上面說的保險起見不一定保險,最保險的方法使在相關(guān)界面提供一個刷新按鈕,為緩存,為加載失敗提供一次重新來過的機會,有了這個刷新按鈕,我們的心也才真的放下來。
關(guān)于android本地數(shù)據(jù)庫原理的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機房服務(wù)器托管租用。
分享標題:Android本地數(shù)據(jù)庫探究 (android本地數(shù)據(jù)庫原理)
URL鏈接:http://www.dlmjj.cn/article/codoieo.html


咨詢
建站咨詢
