999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android的數據訪問技術研究

2014-03-16 09:21:54邢立國褚龍現
電子設計工程 2014年9期
關鍵詞:數據庫方法

邢立國,褚龍現

(平頂山學院 河南 平頂山 467000)

目前大部分應用程序的主要功能都圍繞數據處理進行設計,如何高效安全地進行數據存儲和訪問成為各類應用設計中重點關注的問題[1]。存儲應用程序中的數據一般有兩種方式,分別是數據文件和數據庫。數據文件存儲數據方式簡潔,但是修改和查詢數據困難,所以主要用來存儲類型簡單且少量數據;數據庫需要借助專門的管理系統進行管理,但是對數據進行增加、刪除、修改和查詢時非常便利,所以可以用來存儲需要經常訪問的大量數據[2]。在Android應用程序中為了存儲和訪問數據也采用上述兩種方式,其中數據文件存儲可以選擇XML文件或基本文件[3],而數據庫則采用Android內置的SQLite進行管理。本文在分析Android中數據存儲方式的基礎上,提出了每種存儲方式下不同數據的訪問技術實現方法,并總結各種訪問技術的應用場景。

1 Android概述

Android是基于Linux內核的開放式操作系統,允許用戶開發應用程序并自由發布[4]。Android平臺由四層框架構成,最底層是Linux內核層,提供各種驅動;第二層是庫和Android運行時,包含C/C++庫、Dalvike虛擬機和Java語言特定函數,用來實現線程管理和內存管理等;第三層是應用程序框架層,是為應用程序提供框架服務的API;最上層是應用程序層,大多是使用Java開發的核心應用和用戶自定義的應用[5]。

目前,Android系統主要應用在智能手機和手持平板電腦中,基于Android的應用程序也越來越多。一個Android項目需要保存數據時,可以將數據文件或數據庫文件保存在res文件夾下,發布格式是一個經過數字簽名的.apk文件包[6]。

2 數據訪問技術

Android應用中可以把數據保存到數據文件中,也可以保存到SQLite管理的數據庫中[7]。保存方式不同,訪問數據時應用技術也不相同。

2.1 文件讀寫

Android系統中的文件讀寫主要分為3類:一是基本文件讀寫,二是簡單共享文件讀寫,三是XML文件讀寫。

1)基本文件讀寫

為了保存數據,Android允許應用程序將數據保存在指定位置的文件中。常見的有兩種位置:設備內部存儲器和SD卡。

①內部存儲器文件讀寫

當應用程序讀寫內部存儲器上文件時,要求文件保存在“/data/data/<package name>/files” 目錄中, 且通過簡化函數openFileOutput()和 openFileInput()進行操作。

其中寫文件提供了四種模式,分別是私有模式,只能被創建文件的程序或具有相同UID的程序訪問;追加模式,在文件結尾處添加新數據;全局讀,允許任何程序讀取私有文件;全局寫,允許任何程序寫入私有文件。

②SD卡文件讀寫

SD卡是設備的擴展存儲,掛載到Android操作系統的“/mnt/sdcard”目錄??梢允褂肍ileInputStream和FileOutputStre am進行讀寫。

2)簡單共享文件讀寫

為了實現不同進程之間共享數據,Android提供了SharedPreferences類支持簡單數據共享。該文件保存在“/data/data/<package name>/shared_prefs”目錄中。

①寫入SharedPreferences

SharedPreferences sp= getSharedPreferences("config",Context.MODE_PRIVATE);

Editor editor=sp.edit();

editor.putString("uname","root");

editor.putString("pwd","12345");

editor.commit();

程序執行完后得到config.xm l文件,文件主要內容如下:

<map>

<string name="uname">root</string>

<string name="pwd">12345</string>

</map>

②讀取SharedPreferences

SharedPreferences sp=getSharedPreferences("config",Context.MODE_PRIVATE);

String name=sp.getString("uname");

String pwd=sp.getString("pwd");

為實現共享,兩個應用的sharedUserId的內容要相同,同時雙方使用MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE模式讀寫內容。

3)XML 文件讀寫

讀寫XML文件的關鍵在于如何解析文件,常見的有兩種解析方式:SAX(Simple API for XML)和 DOM(Document ObjectModel)。兩種解析方式中,SAX占用資源少、速度快,但是不能進行查找和修改;DOM將XML記入內存可以反復查詢和修改,但是占用內存多、分析效率低[8]。

Android中提供了 Xm lResourceParser類,實現Xm lPullParser接口,是基于SAX的XML分析器。在使用Xm lResourceParser進行解析時主要依據各種事件類型進行處理。

2.2 數據庫存取

Android中內置的SQLite數據庫管理系統由C語言編寫,支持SQL操作[9]。默認情況下,數據庫文件保存在“/data/data/<應用程序包>/databases”中,也可以保存到任意有權限訪問的目錄。

訪問SQLite數據庫一般分為3個步驟:創建數據庫連接、數據操作和關閉連接。

1)創建連接

在Android開發中可以繼承SQLiteOpenHelper類實現數據庫連接的創建。下面代碼創建了到數據庫student.db的連接。

public class MyHpr extends SQLiteOpenHelper{//完成數據表創建}

于是,創建連接可以用下面語句完成:

MyHpr hp=new MyHpr(this);

SQLiteDatabase db=hp.getWritableDatabase();

2)數據操作

數據庫連接創建完成后可以執行插入、修改、刪除和查詢操作。

①插入數據方法

ContentValues cv=new ContentValues();

cv.put(列名,列值);

db.insert(表名,null,cv);

②修改數據方法

ContentValues cv=new ContentValues();

cv.put(列名,列值);

db.update(表名,cv,where條件,修改條件中參數值);

③刪除數據方法

db.delete(表名,cv,where條件,修改條件中參數值);

④查詢數據方法

Cursor c=db.query(表名,select包含字段,where條件,條件中參數值,group子句,having子句,排序字段);

查詢操作將返回Cursor對象,通過該對象的moveToNext()方法可以讀取下一行數據,通過getType(int ColIndex)方法可以獲取指定行中指定列的值。

3)關閉連接

當應用程序暫停、退出或不再需要操作數據庫時應該關閉數據庫連接:

db.close();

2.3 數據共享

Android應用程序運行在不同的進程空間中,因此不同應用程序的數據不能直接訪問。盡管使用SharedPreferences可以簡單實現跨進程訪問,但存在一定局限性。

ContentProvider是應用程序之間共享數據的一種接口機制,是一種更為高級的數據共享方法,可以指定需要共享的數據,而其他應用程序則可在不知道數據來源、路徑的情況下,對共享數據進行查詢、添加、刪除和更新等操作。

ContentProvider使用的URI語法結構如下

content://<authority>/<data_path>/<id>

創建ContentProvider分為下面3個步驟:

1)繼承 ContentProvider

新建立的類繼承ContentProvider后,共有6個函數需要重載,如表1所示。

表1 ContentProvider重載Tab.1 ContentProvider overloaded functions

2)聲明 CONTENT_URI,實現 UriMatcher

在新構造的ContentProvider類中,經常需要判斷URI是單條數據還是多條數據,最簡單的方法是構造一個UriMatcher。

private static final UriMatcher uMr;

static{

uMr=new UriMatcher(UriMatcher.NO_MATCH);

uMr.addURI(授權者,單條數據路徑,單條標示);

uMr.addURI(授權者,多條數據路徑,多條標示);

}

3)注冊 ContentProvider

在完成ContentProvider類的代碼實現后,需要在AndroidManifest.xm l文件中進行注冊。

<application android:icon="@drawable/icon"

android:label="@string/app_name">

<provider android:name=".自定義類名"android:authorities="授權名稱"/>

</application>

自定義ContentProvider完成后不需要直接調用類中的方法,而是通過ContentResolver對象進行數據操作。

ContentResolver r=getContentResolver();

ContentValues cv=new ContentValues();

UrinewUri=r.insert(uri,cv);

ContentValues cv1=new ContentValues();

int result=r.update(uri,cv1,where條件,條件中參數值);

int result1=r.delete(uri,where條件,條件中參數值);

Cursor cursor=r.query(uri,select包含字段,where條件,條件中參數值,排序字段);

3 應用場景分析

上述3種數據訪問技術都能夠實現Android中數據的存儲與查詢,但是各有其優缺點。在實際項目開發過程中需要根據應用場景確定選用何種數據存儲及訪問方式。

當需要存儲結構化不強且數據量較少的數據時考慮使用文件存儲方式。若保存的是“鍵-值”應用程序配置信息,適合采用SharedPreferences方式,這樣既方便存取訪問又能實現簡單共享。

當數據量較大且經常做數據訪問操作時考慮使用數據庫存儲方式。如果只在一個應用程序內部進行數據訪問,直接構造數據庫連接進行訪問即可;如果需要在多個應用之間進行數據共享訪問,則使用ContentProvider實現共享。

4 結束語

通過對Android應用中3種常見數據存儲訪問技術的研究,闡述了各種訪問方式的基本實現方法,最后簡單分析各種技術的應用場景。對數據訪問技術的研究為更好地理解Android數據存儲訪問機制和原理,在應用程序開發中合理選用高效的存儲訪問方式提供重要依據。

[1]燕超霞.基于Android的工程材料信息管理系統的設計與實現[D].鄭州:鄭州大學,2012.

[2]劉婕.基于Android系統的移動終端通訊錄的研究與設計[D].西安:西安電子科技大學,2012.

[3]倪紅軍.基于Android系統的數據存儲訪問機制研究[J].計算機技術與發展,2013,23(6):90-93.NIHong-jun.Study of data storage accessmechanism based on android system [J]. Computer Technology and Development,2013,23(6):90-93.

[4]姚昱昱,劉衛國.Android的架構與應用開發研究[J].計算機系統應用,2008,17(11):110-112.YAO Yu-yu,LIUWei-guo.Study of Android architecture and its application development [J].Computer Systems &Applications,2008,17(11):110-112.

[5]公磊,周聰.基于Android的移動終端應用程序開發與研究[J].計算機與現代化,2008(8):85-89.GONG Lei,ZHOU Cong.Development and research ofmobile termination application based on Android[J].Computer and Modernization,2008(8):85-89.

[6]楊超.基于Android平臺的電子閱讀客戶端的設計與實現[D].北京:北京交通大學,2011.

[7]Reto Meier.Professional Android 4 Application Development[M].John Wiley&Sons,Inc.,2012.

[8]朱珊娜,李書琴,安福定.XML文檔到關系數據庫的轉換研究[J].計算機工程與設計,2008,29(21):5507-5509.ZHU Shan-na,LI Shu-qin,AN Fu-ding.Conversion from XML document to relational database [J].Computer Engineering and Design,2008,29(21):5507-5509.

[9]趙珂.基于Android移動終端預約掛號系統的設計與實現[D].武漢:武漢理工大學,2012.

猜你喜歡
數據庫方法
學習方法
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
可能是方法不對
數據庫
財經(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
主站蜘蛛池模板: 欧美亚洲国产视频| 国产在线观看精品| 中国一级毛片免费观看| 久久一日本道色综合久久| 欧美日韩国产系列在线观看| 日韩精品一区二区深田咏美| 亚洲色图欧美激情| 2021亚洲精品不卡a| 国产精品黄色片| 亚洲色图狠狠干| 欧美笫一页| 99热这里只有精品在线播放| 一级高清毛片免费a级高清毛片| 国产乱子伦精品视频| 欧美色香蕉| 亚洲综合日韩精品| 九九免费观看全部免费视频| 综合久久五月天| 亚洲欧美在线精品一区二区| 日本精品视频一区二区| 亚洲bt欧美bt精品| 99在线观看国产| 99re66精品视频在线观看| 99性视频| 最新国产成人剧情在线播放| 亚洲av综合网| 国产欧美日韩视频怡春院| 精品国产一区91在线| 亚洲伊人电影| 国产极品美女在线播放| 久久久久人妻一区精品色奶水| 性欧美在线| 国产精品999在线| 久久性妇女精品免费| 国产欧美成人不卡视频| 久久黄色免费电影| 精品久久综合1区2区3区激情| 国产不卡一级毛片视频| 91亚洲精品国产自在现线| 欧美日韩一区二区在线免费观看| 在线精品自拍| 中文字幕亚洲乱码熟女1区2区| 国产精品欧美在线观看| 在线看国产精品| 伊人久久久大香线蕉综合直播| 免费看黄片一区二区三区| 亚洲欧美另类色图| 国产高清又黄又嫩的免费视频网站| 日韩在线播放中文字幕| 国产专区综合另类日韩一区| 国产成人综合亚洲欧美在| 欧美另类视频一区二区三区| 在线观看免费AV网| 激情六月丁香婷婷| 东京热一区二区三区无码视频| 久久精品人妻中文视频| 88国产经典欧美一区二区三区| 国产亚洲现在一区二区中文| 国产一区二区视频在线| 亚洲高清国产拍精品26u| 在线日韩一区二区| 国产成人精品高清在线| 欧美亚洲激情| 亚洲精品视频网| 亚洲大尺度在线| 亚洲成人黄色网址| 国产91精品久久| 欧美伦理一区| 国产精品无码久久久久AV| 尤物特级无码毛片免费| 2021国产在线视频| 国产精品主播| 亚洲成年人网| 国产丝袜丝视频在线观看| 伊人久久青草青青综合| 永久免费无码成人网站| 一级一级一片免费| 九色在线观看视频| 99在线观看精品视频| 日韩精品一区二区三区免费| 国产一线在线| 99热这里只有精品2|