2024年10月android sqlite(安卓怎么读取sqlite数据库)

 更新时间:2024-10-12

  ⑴androidsqlite(安卓怎么读取sqlite数据库

  ⑵如下图:使用sqlite管理数据库:sqlite命令行工具默认是以;结束语句的,这次我们就会用shell来访问android应用中的sqlite数据库文件,注意adb要在Android模拟器运行时才能进入shell:如下图进入数据库所在目录:shell命令记住两个基本命令ls和cd,则命令“sqlitetest.db”会在当前目录下新建数据库test.db,Android上SQLite的最佳实践如何设置Android手机的sqlite命令环境安卓怎么读取sqlite数据库安装SQLiteExpertProfessional可以在网上下载,先介绍使用DDMS导出sqlite数据库的操作和使用adb工具访问sqlite数据库,使用sqlite管理工具来进行数据库操作键入sqlite数据库名就进入了sqlite管理模式了,..SQLite的C接口以上介绍的是SQLite数据库的命令操作方式。

  ⑶安卓怎么读取sqlite数据库

  ⑷安装SQLiteExpertProfessional可以在网上下载,我下载的是试用版,没有找注册码,但是试用不影响使用,反正用几次查看到数据库操作没有错误就不用这个工具了。当然也可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看。android项目中的sqlite数据库位于/data/data/项目包/databases中。先介绍使用DDMS导出sqlite数据库的操作和使用adb工具访问sqlite数据库。首先打开android项目的调试模式,然后找到显示DDMS切换到DDMS,显示FileExplorer窗口,找到/data/data/如下图,然后找到程序包的文件夹,打开databases,就能看到sqlite数据库文件了。选择将其导出。如下图.这样就把sqlite数据库文件以文件的方式导出来了,然后使用sqlite界面管理工具如SQLiteExpertProfessional可以打开该数据库了。其他sqlite界面管理工具如sqliteadministrator、sqliteman或者firefox插件sqlitemanager也可以打开该数据库。使用adb工具访问sqlite数据库AndroidDebugBridge(ADB是Android的一个通用调试工具,它可以更新设备或模拟器中的代码,可以管理预定端口,可以在设备上运行shell命令,我们知道android是基于Linux内核,它的内部文件结构也是采用linux文件组织方式,因此访问它的文件结构需要使用shell。这次我们就会用shell来访问android应用中的sqlite数据库文件。、运行cmd,切换到android-sdk目录,运行adb.exe,加上参数shell,出现#号就代表进入了shell命令模式,注意adb要在Android模拟器运行时才能进入shell:如下图进入数据库所在目录:shell命令记住两个基本命令ls和cd,类似windows命令提示行中的dir和cd,代表列出当前目录下文件列表和进入到指定目录。了解这两个命令之后,就可以找到data/data/项目包名/databases如下图,找到数据库文件如下图。使用sqlite管理工具来进行数据库操作键入sqlite数据库名就进入了sqlite管理模式了。如下图设置sqlite环境变量:在android的sdk中自带了sqlite.exe,这是sqlite的官方管理工具,它是一个命令行工具。为了使用方便,将其路径注册到系统环境变量path中,即将;%Android_Home%加在Path中,这样只样运行sqlite,就能直接打开sqlite管理工具了。如下图:使用sqlite管理数据库:sqlite命令行工具默认是以;结束语句的。所以如果只是一行语句,要在末尾加;,或者在下一行中键入;,这样sqlite命令才会被执行。sqlite常用命令:.tables--查看数据库的表列表.exit--退出sqlite命令行其他命令可随时.help查看帮助。sql命令可直接在此命令行上执行即可:

  ⑸如何使用SQLite,Android上SQLite的最佳实践

  ⑹SQLite是目前最新的SQLite版本。可以从网站上下载SQLite的源代码(本书使用的版本是sqlite-...tar.gz。解压缩后进入sqlite-..的根目录,首先命令“生成Makefile文件,接着运行命令“make”对源代码进行编译,最后运行命令“makeinstall”安装SQLite。安装完毕后,可以运行命令sqlite查看SQLite是否能正常运行,如下所示:#sqliteSQLiteversion..Enter".help"forinstructionsEnterSQLstatementsterminatedwitha";"sqlite》可以看到,SQLite启动后会停留在提示符sqlite》处,等待用户输入SQL语句。在使用SQLite前需要先了解下SQLite支持的数据类型。SQLite支持的基本数据类型主要有以下几类:NULLNUMERICINTEGERREALTEXTSQLite会自动把其他数据类型转换成以上类基本数据类型,转换规则如下所示:char、clob、test、varchar—》TEXTinteger—》INTEGERreal、double、float—》REALblob—》NULL其余数据类型都转变成NUMERIC下面通过一个实例来演示SQLite的使用方法。新建一个数据库新建数据库test.db(使用.db后缀是为了标识数据库文件。在test.db中新建一个表test_table,该表具有name,、sex、age三列。SQLite的具体操作如下所示:#sqlitetest.dbSQLiteversion..Enter".help"forinstructionsEnterSQLstatementsterminatedwitha";"sqlite》createtabletest_table(name,sex,age);如果数据库test.db已经存在,则命令“sqlitetest.db”会在当前目录下打开test.db。如果数据库test.db不存在,则命令“sqlitetest.db”会在当前目录下新建数据库test.db。为了提高效率,SQLite并不会马上创建test.db,而是等到第一个表创建完成后才会在物理上创建数据库。由于SQLite能根据插入数据的实际类型动态改变列的类型,所以在create语句中并不要求给出列的类型。创建索引为了加快表的查询速度,往往在主键上添加索引。如下所示的是在name列上添加索引的过程。sqlite》createindextest_indexontest_table(name);操作数据如下所示的是在test_table中进行数据的插入、更新、删除操作:sqlite》insertintotest_tablevalues(’xiaoming’,’male’,);sqlite》insertintotest_tablevalues(’xiaohong’,’female’,);sqlite》select*fromtest_table;xiaoming|male|xiaohong|female|sqlite》updatetest_tablesetage=wherename=’xiaohong’;sqlite》select*fromtest_table;xiaoming|male|xiaohong|female|sqlite》deletefromtest_tablewherename=’xiaoming’;sqlite》select*fromtest_table;xiaohong|female|批量操作数据库如下所示的是在test_table中连续插入两条记录:sqlite》begin;sqlite》insertintotest_tablevalues(’xiaoxue’,’female’,);sqlite》insertintotest_tablevalues(’xiaoliu’,’male’,);sqlite》mit;sqlite》select*fromtest_table;xiaohong|female|xiaoxue|male|xiaoliu|male|运行命令mit后,才会把插入的数据写入数据库中。数据库的导入导出如下所示的是把test.db导出到sql文件中:#sqlitetest.db".dump"》test.sql;test.sql文件的内容如下所示:BEGINTRANSACTION;CREATETABLEtest_table(name,sex,age);INSERTINTO"test_table"VALUES(’xiaohong’,’female’,);CREATEINDEXtest_indexontest_table(name);MIT;如下所示的是导入test.sql文件(导入前删除原有的test.db:#sqlitetest.db《test.sql;通过对test.sql文件的导入导出,可以实现数据库文件的备份。..SQLite的C接口以上介绍的是SQLite数据库的命令操作方式。在实际使用中,一般都是应用程序需要对数据库进行访问。为此,SQLite提供了各种编程语言的使用接口(本书介绍C语言接口。SQLite具有几十个C接口,下面介绍一些常用的C接口。sqlite_open作用:打开SQLite数据库原型:intsqlite_open(constchar*dbname,sqlite**db)参数:dbname:数据库的名称;db:数据库的句柄;sqlite_colse作用:关闭SQLite数据库原型:intsqlite_close(sqlite*db)例如:test.c:#include《stdio.h》#include《sqlite.h》staticsqlite*db=NULL;intmain(){intrc;rc=sqlite_open("test.db",&db);if(rc){printf("can’topendatabase!

  ⑺");}else{printf("opendatabasesuess!

  ⑻");}sqlite_close(db);return;}运行命令“g–otesttest.c–lsqlite”进行编译,运行test的结果如下所示:#opendatabasesuess!sqlite_exec作用:执行SQL语句原型:intsqlite_exec(sqlite*db,constchar*sql,int(*callback)(void*,int,char**,char**),void*,char**errmsg)参数:db:数据库;sql:SQL语句;callback:回滚;errmsg:错误信息例如:test.c:#include《stdio.h》#include《sqlite.h》staticsqlite*db=NULL;statihar*errmsg=NULL;intmain(){intrc;rc=sqlite_open("test.db",&db);rc=sqlite_exec(db,"insertintotest_tablevalues(’daobao’,’male’,)",,,&errmsg);if(rc){printf("execfail!

  ⑼");}else{printf("execsuess!

  ⑽");}sqlite_close(db);return;}编译完成后,运行test的结果如下所示:#".help"forinstructionsEnterSQLstatementsterminatedwitha";"sqlite》select*fromtest_table;daobao|male|sqlite_get_table作用:执行SQL查询原型:intsqlite_get_table(sqlite*db,constchar*zSql,char***pazResult,int*pnRow,int*pnColumn,char**pzErrmsg)参数:db:数据库;zSql:SQL语句;pazResult:查询结果集;pnRow:结果集的行数;pnColumn:结果集的列数;errmsg:错误信息;sqlite_free_table作用:注销结果集原型:voidsqlite_free_table(char**result)参数:result:结果集;例如:test.c:#include《stdio.h》#include《sqlite.h》staticsqlite*db=NULL;statihar**Result=NULL;statihar*errmsg=NULL;intmain(){intrc,i,j;intnrow;intncolumn;rc=sqlite_open("test.db",&db);rc=sqlite_get_table(db,"select*fromtest_table",&Result,&nrow,&ncolumn,&errmsg);if(rc){printf("queryfail!

  ⑾");}else{printf("querysuess!

  ⑿");for(i=;i《=nrow;i++){for(j=;j《ncolumn;j++){printf("%s|",Result);}printf("

  ⒀");}}sqlite_free_table(Result);sqlite_close(db);return;}编译完成后,运行test的结果如下所示:#|female||xiaoxue|female||xiaoliu|male||daobao|male||sqlite_prepare作用:把SQL语句编译成字节码,由后面的执行函数去执行原型:intsqlite_prepare(sqlite*db,constchar*zSql,intnByte,sqlite_stmt**stmt,constchar**pTail)参数:db:数据库;zSql:SQL语句;nByte:SQL语句的最大字节数;stmt:Statement句柄;pTail:SQL语句无用部分的指针;sqlite_step作用:步步执行SQL语句字节码原型:intsqlite_step(sqlite_stmt*)例如:test.c:#include《stdio.h》#include《sqlite.h》staticsqlite*db=NULL;staticsqlite_stmt*stmt=NULL;intmain(){intrc,i,j;intncolumn;rc=sqlite_open("test.db",&db);rc=sqlite_prepare(db,"select*fromtest_table",-,&stmt,);if(rc){printf("queryfail!

  ⒁");}else{printf("querysuess!

  ⒂");rc=sqlite_step(stmt);ncolumn=sqlite_column_count(stmt);while(rc==SQLITE_ROW){for(i=;i《;i++){printf("%s|",sqlite_column_text(stmt,i));}printf("

  ⒃");rc=sqlite_step(stmt);}}sqlite_finalize(stmt);sqlite_close(db);return;}编译完成后,运行test的结果如下所示:#|female||xiaoxue|female||xiaoliu|male||daobao|male||在程序中访问SQLite数据库时,要注意CAPI的接口定义和数据类型是否正确,否则会得到错误的访问结果。

  ⒄如何设置Android手机的sqlite命令环境

  ⒅在PC环境下启动一个模拟器(不是手机)、查看模拟器/systen/xbin是否有sqlite命令adbshellcd/system/xbinls、把模拟器/system/xbin/sqlite命令文件从模拟器拷到PC上adbpull/system/xbin/sqlitee:/eclipse、关闭模拟器,把Android手机连接到PC、获取Android手机/system文件夹的读取权限adbshell#mout-oremout,rw-tyaffs/dev/block/mtdblock/system(根据自己的设备网上很多人的设备是这个、把PC上的e:/eclipse/sqlite文件拷到Android手机的/system/xbin/目录下adbpushe:/sqlite/system/xbin若是提示permissiondenialadbshellchmodsystem/cdsystemchmodxbin然后执行上面的push若是还是不行就直接到eclipseDDMSfilterexplore下面/system/xbin把所用的数据直接从电脑上拖到/system/xbin下面、修改Android真机/system/xbin/sqlite命令的权限adbshellchmod/system/xbin/sqlite然后输入sqlite进入到sqlite就可以了。若是能执行则说明数据库安装好了android数据库是建立在/data/data/项目.example.name/databases/数据库名进入目录下面打开数据库sqlitedatabase_name.db.若是打不开则把数据库的权限改成或就可以了。Chmoddatabase_name.若是要进行写操作则必须把所有目录的写权限设置了/data/data/项目.example.name/databases/数据库名人数据库前面所有的权限都改了例chmoddatacddatachmoddatacddatachmod项目名称然后就可以执行sqlite数据库名就可以了。

您可能感兴趣的文章:

相关文章