温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
浅谈
SQLite
数据库技术
Android
平台
应用
浅谈SQLite数据库技术在Android平台的应用
【】在当今的数字世界中, 的应用范围越来越广。在 这种特殊设备里,经常会存取一些数据,例如:音频文件、视频文件、图片文件和通讯录等数据。Android作为一种 操作系统,提供如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据库和网络等。本文将着重阐述SQLite数据库技术在Android平台的应用。
【关键词】SQLite;Sqliteman;ADB Shell;Android;SQLiteDatabase
1.引言
SQLite是轻量级的嵌入式关系型数据库,目前已经在iPhone、Android等 系统中使用。SQLite具有可移植性好,易用,占用存储空间小,高效可靠等特点。SQLite嵌入到使用的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
2.SQLite原理与运行环境
2.1 SQLite根本原理
在SQLite内部,SQLite由以下几个组件组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎,使调试、修改和扩展SQLite的内核变得更加方便,所有SQL语句被编译成可以在SQLite虚拟机中执行的程序集。
2.2 SQLite运行环境
Android SDK包含了假设干有用的SQLite数据库管理类。它们中的许多都存在于android.database.sqlite包中。其中,可以发现许多功能包类,比方SQLiteDatabase类提供了创立和使用SQLite数据库的API。SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用于管理数据库的创立和版本更新。
3.SQLite创立与管理
3.1 使用Sqliteman创立和管理SQLite数据库
Sqliteman是一款方便易用的图形化sqlite数据库工具。该软件有着全面的Sqlite功能,适用于所有平台,而且完全免费提供给用户使用。下面以txl数据库的创立和管理为例进行说明。
(1)运行sqliteman.exe程序翻开Sqliteman数据库管理系统,点击“File〞菜单下的“Open〞命令,出现如图2-1所示的界面,在文件名中输入数据库的名称txl,并点击“保存〞按钮。
图2-1 输入要创立的数据库文件名称
(2)此时在出现树形结构的菜单中,选择“Tables〞,右击鼠标选择“Create Table〞命令,在出现的窗口中输入表名“tbl_txl〞以及要创立的字段、数据类型和默认值,如图2-2所示,然后点击“Create〞按钮,那么创立了名为“tbl_txl〞的数据表。
(3)退出Sqliteman数据库管理系统,然后重新进入,在出现树形结构的菜单中,可以实现对txl数据的管理。
图2-2 输入字段、数据类型和默认值
3.2 使用ADB Shell管理SQLite数据库
Android Debug Bridge(ADB)是Android的一个通用调试工具。它既可以更新设备或模拟器中代码和管理预定端口,又可以在设备上运行shell命令。Android基于Linux内核,其内部文件结构采用Linux文件组织方式,因此可以使用shell来访问Android应用中的Sqlite数据库文件。
(1)运行cmd,运行adb.exe,加上参数shell,出现#号就代表进入了shell命令模式,注意:ADB要在Android模拟器运行时才能进入shell。
(2)在shell中,有两个根本命令ls和cd,类似Windows命令提示符中的dir和cd,代表列出当前目录下文件列表和进入到指定目录。通过使用ls命令浏览目录结构,然后使用cd命令可进入目录data/data/com.tl.hellworld2/databases。
(3)找到数据库txl后,键入sqlite3 txl就可进入SQLite管理模式,通过命令可对txl数据库进行管理。
4.SQLite实现与应用
4.1 SQLite数据库部署
在Android系统中,数据库的默认目录一般是存放在data/data/应用程序包名/databases下。通常情况下,数据库是存放在 应用程序目录下的res/raw目录下,这样方便发布系统的时候,将数据库一同发布。当 应用程序安装并运行时,数据库会从res/raw目录复制到data/data/应用程序包名/databases下,方便系统对数据库进行访问。以下是SQLite数据库部署的局部程序代码:
private void CopyAndLoadDB(){
java.io.File dir = new java.io.File ("data/data/"+getPackageName()+"/databases");
if(!dir.exists() || !dir.isDirectory()){
dir.mkdir();//判断data/data/com.tl.hellworld2/databases目录是否存在,不存在那么创立}
java.io.File file = new java.io.File (dir,"txl");
if(!file.exists()){
//判断data/data/com.tl.hellworld2/databases/txl文件是否存在,不存在那么从res/raw目录中创立
FileUtil.loadDbFile(R.raw.txl,file,this.getResources());}}
4.2 SQLite技术的实现
Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)等操作。execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。
(1)翻开或创立数据库
public static void openDataBase(Activity act)
{mSQLiteDatabase
=act.openOrCreateDatabase(DATABASE_NAME,act.MODE_PRIVATE,null);}
在以上代码中,通过openOrCreateData base方法可以创立一个不存在的数据库,或翻开一个已创立的数据库,并返回一个SQLiteData base对象,其中第一个参数为数据库路径,第二个参数为访问权限,第三个参数是指定返回一个Cursor子类的工厂,如果未指定(null)那么使用默认工厂。
(2)插入数据
插入数据有两种方法:一种是调用SQLite Database的insert(String table,String nullColumnHack,CotentValues values)方法,该方法的第一个参数是表名称,第二个参数是空列的默认值,第三个参数是ContentValues类型的一个封装了列名称和列值的Map;另一种方法是编写插入数据的SQL语句,直接调用SQLiteDatabase的exeSQL()方法来执行。第二种方法例如代码如下:
public static void addLxr(String str_xm,String str_xb,String str_dh,String str_jtzz) {
String strsql="INSERT INTO tbl_txl (xm,xb,dh,jtzz) VALUES(""+ str_xm +"",""+ str_xb +"",""+str_dh+"",""+str_jtzz+"")";
mSQLiteDatabase.execSQL(strsql);}
运行结果如图3-1所示:
图3-1 插入数据运行结果
(3)修改数据
和插入数据类似,修改数据也有两种方式。一是调用SQLiteDatabase的update(String table,ContentValues values,String where Clause,String[] whereArgs)方法。该方法的第一个参数是表名称,第二个参数是更新列ContentValues类型的键值对(Map),第三个参数是更新条件(where子句),第四个参数是更新条件值数组。二是编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。第二种方法例如代码如下:
public static void gxLxr(String str_xm,String str_xb,String str_dh,String str_jtzz,int _id){
String strsql="UPDATE tbl_txl SET xm="" +str_xm +"",xb=""+str_xb+"",dh=""+str_dh+"",jtzz=""+str_jtzz+"" WHERE _id="+Integer.toString(_id);
mSQLiteDatabase.execSQL(strsql);}
运行结果如图3-2所示:
图3-2 修改数据运行结果
(4)删除数据
和插入修改数据类似,删除数据也有两种方法:一种是调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法,该方法的第一个参数是表名称,第二个参数是删除条件,第三个参数是删除条件数组;另一种方法是编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。第二种方法例如代码如下:
public static void scLxr(int _id){
String strsql="DELETE FROM tbl_txl WHERE _id=" + Integer.toString(_id);
mSQLiteDatabase.execSQL(strsql);}
(5)查询数据
查询数据使用SQLiteDatabase的rawQuery (String sql, String[] selectionArgs) 方法,第一个参数是查询SQL语句,第二个参数是查询参数所对应的数组。此方法执行成功后返回一个游标(Cursor)对象,例如代码如下:
public static Cursor findLxr(int int_id){
String strsql="";
strsql="SELECTxFROM tbl_txl WHERE _id=" + Integer.toString(int_id);
Cursor cur_lxr = mSQLiteDatabase.rawQuery(strsql, null);
return cur_lxr;}
运行结果如图3-3和图3-4所示。
图3-3 未输入查询条件查询结果
图3-4 输入查询条件“唐〞查询结果
5.结束语
综上所述,SQLite数据库在 等嵌入式设备上的使用是嵌入式设备数据存储技术的重大革新。相信随着科技的进一步开展,嵌入式数据库技术所使用频率将会越来越高,将会具有更强大的功能和更高效的性能,会使我们的 应用世界更加丰富多彩。
参考文献
[1](美)达西(Darcey,L.),(美)康德尔(Conder,S.)著.李卉,张魏,祝延彬译.Android移动开发一本就够[M].北京:人民邮电出版社,2022.
[2]郭宏志.Android应用开发详解[M].北京:电子工业出版