您当前的位置:首页 > 互联网教程

Android开发怎么查看和管理sqlite数据库

发布时间:2025-05-23 06:32:15    发布人:远客网络

Android开发怎么查看和管理sqlite数据库

一、Android开发怎么查看和管理sqlite数据库

1首先打开android项目的调试模式,然后找到显示DDMS

切换到DDMS,显示FileExplorer窗口,找到/data/data/如下图1,

然后找到程序包的文件夹,打开databases,就能看到sqlite数据库文件了。选择将其导出。如下图2.

这样就把sqlite数据库文件以文件的方式导出来了,然后使用sqlite界面管理工具如SQLite Expert Professional可以打开该数据库了。其他 sqlite界面管理工具如sqliteadministrator、sqliteman或者firefox插件sqlitemanager也可以打开该数据库

AndroidDebugBridge(ADB)是Android的一个通用调试工具,它可以更新设备或模拟器中的代码,可以管理预定端口,可以在设备上运行shell命令,知道android是基于Linux内核,它的内部文件结构也是采用linux文件组织方式,因此访问它的文件结构需要使用shell。这次我们就会用shell来访问android应用中的sqlite数据库文件。

1、运行cmd,切换到android-sdk目录,运行adb.exe,加上参数shell,出现#号就代表进入了shell命令模式,注意adb要在Android模拟器运行时才能进入shell:如下图

shell命令记住两个基本命令ls和cd,类似windows命令提示行中的dir和cd,代表列出当前目录下文件列表和进入到指定目录。了解这两个命令之后,就可以找到data/data/项目包名/databases如下图1,找到数据库文件如下图2。

使用sqlite管理工具来进行数据库操作

键入sqlite3数据库名就进入了sqlite管理模式了。

在android的sdk中自带了sqlite3.exe,这是sqlite的官方管理工具,它是一个命令行工具。为了使用方便,将其路径注册到系统环境变量path中,即将;%Android_Home%加在Path中,这样只样运行sqlite3,就能直接打开sqlite管理工具了。

sqlite命令行工具默认是以;结束语句的。所以如果只是一行语句,要在末尾加;,或者在下一行中键入;,这样sqlite命令才会被执行。

其他命令可随时.help查看帮助。sql命令可直接在此命令行上执行即可:

二、如何用sqlite3

1.首先是下载sqlite,可以该页面下载:

当前的最新版本为:sqlite-shell-win32-x86-3070701.zip这个是windows下sqlite的命令行管理工具,用它可以管理sqlite数据库文件

同时最好把文档也下载下来,里面包含了详细的sqlite的使用说明:sqlite-doc-3070701.zip

sqlite无需任何配置和安装,只要将下载下来的shell文件解压到任何你觉得合适的地方,然后将其加入到path环境变量就可以了(加入path环

境变量是为了直接在命令行使用sqlite3,不加的话需要详细的指定sqlite3的路径,如d:/sqlite/sqlite3)。

要想掌握一个软件的使用,最好的方式是使用软件自带的帮助和文档,而不是一直利用google。文档和帮助一般包含了该软件所有的用法,毕竟那是有软件的开发者所写的,他对软件是最了解的。

win+ r输入cmd,进入命令行,并输入sqlite3,进入sqlite的命令行管理工具。

然后输入.help,则可以看到sqlite3的管理工具的所有用法了:

为了照顾e文不好的朋友,这里将所有的命令解释一遍,并给出相应的示例:

首先创建一个数据库test.db,并在该数据库中创建一张表user

1.因为之前进入了sqlite3了,先用.quit退出sqlite

2.再用sqlite3 test.db加载或创建指定数据库

3.然后用sql语句创建一个一张表user(关于sql语句,可以去看些sql入门的书籍,在sqlite文档中也有对应的sql的介绍,不过

感觉那个不适合入门,因为毕竟很多数据库的基本知识里面都没有讲到)(同时还需要注意的是sqlite是可以不指定列的类型的,这也是sqlite的一个

4.然后又用到了一个显示当前数据库中存在的数据表的命令.tables(.help中倒数第三个)

5.最后向数据表中插入了一条数据(sql语句,不是.help中的命令)

接下来从上到下介绍所有命令的使用:

将数据库文件备份到指定的文件中,默认(在不指定数据库名时)会备份main数据库)

设置在遇到错误时就停止sqlite工具的执行,默认时是OFF的。

列出(当前数据库文件中)附加的所有数据库的名字和文件

将数据库打印为sql文本格式。如果?TABLE1?指定了,就只打印出名字中包含了TABLE1的数据表。

在显示的结果前是否显示输入的命令

注意:这个是以column模式显示了,后面会讲到如何将显示方式设置为column

开启或关闭适合于的输出模式。不指定ON或OFF时,默认为ON。

--no-drop:不删除旧的外键触发器

--ignore-error:忽略表的外键错误

这个应该是设置在违反外键约束时,sqlite如何做。具体的没尝试。

设置输出模式,当?TABLE?指定时,就是该输出模式只应该在该表的输出上

读取文件中的数据插入到指定表中

注意这里的分隔符.separator是\t,所以data.txt中是以tab分隔的,默认的是,(此时就是2,yuan2,2)

显示指定表的所有索引。表没指定时,显示所有索引。

开启,并将日志输出到标准输出流:.log stdout

开启,并将日志输出到标准错误六:.log stderr

开启,并将日志输出到指定文件:.log d:/sqlite3/log.txt

值为NULL时,显示的字符串。默认为""

将所有的输出都输出到标准输出流(默认就是),就是输出到控制台上

从备份文件中还原数据库。默认是还原main数据库。

3.然后在还原main数据库,看数据是否还原成功

显示指定表的创建语句。表未指定时,显示所有表的创建语句。

因为之前创建了索引,所以包含索引创建语句。

设置输出模式.mode和导入数据.import的分隔符。

只在指定的毫秒内尝试打开锁定的表,而不是一直尝试打开。

设置.mode column中每个列的宽度。每个列默认的宽度是10个字符,过长时会被截断。

第一列设为1个字符,第二列设为0表示保持不变,第三类不设置也是保持不变

三、MFC中,如何连接sqlite3的数据库,并对此数据库操作

这个比较容易。按照网上提供的方法把sqlite编译成dll和lib

将dll和lib在项目的输入中添加好

在要操作的文件中#include“sqlite3.h”就可以了。我做过这方面的项目,虽然是嵌入式wince使用,但是基本和windows相同。

1).打开VC新建一个“Win32 Dynamic-Link Library”工程,命名为:sqlite3(也可以是其他的,注意这个就是编译后的dll和lib的名字)

2).在接下来的对话框中选择"An empty DLL project",点 FINISH->OK

3).将源码中所有的*.c*.h*.def复制到工程文件夹下

4).在工程的Source File中添加你下载到的SQLite源文件中所有*.c文件,

注意这里不要添加shell.c和tclsqlite.c这两个文件。*注意需要将tclsqlite.c和shell.c、icu.c去掉。其中tclsqlite.c用于生成基于tcl的api,如果要编译,这需要另外下载tcl.h;shell.c用于生成命令行模式的sqlite.exe,如果是静态库形式则可以选择; icu是internationalcomponents forunicode,如果需要则需另外下载相关头文件。

5).将 SQLite源文件中的 sqlite3.def文件添加到在工程的Source File中

6).在Header File中添加你下载到的SQLite源文件中所有*.h文件,

e:\zieckey\sqlite\sqlite3\sqlite3ext.h(22): fatal error C1083: Cannot open include file:'sqlite3.h': No such file or directory

经检查发现,源码中包含sqlite3.h都是以#include<sqlite3.h>方式包含的,

这就是说编译器在系统默认路径中搜索,这样当然搜索不到 sqlite3.h这个头文件啦,

这时可以改为#include"sqlite3.h",让编译器在工程路径中搜索,

但是如果还有其他地方也是以#include<sqlite3.h>方式包含的,那么改源码就显得有点麻烦,

好了,我们可以这样,在菜单栏依次选择:Tools->Options...->Directeries

在下面的Directeries选项中输入你的 sqlite3.h的路径,这里也就是你的工程目录.

添加好后,我们在编译一下就好了,

最后我们在工程目录的 Debug目录生成了下面两个重要文件:

动态链接库文件 sqlite3.dll和引入库文件 sqlite3.lib

下面我们来编写个程序来测试下我们的动态链接库.

在VC下新建一个空的"Win32 Console Application" Win32控制台程序,工程命名为:TestSqliteOnWindows

再新建一个 test.cpp的C++语言源程序,源代码如下:

// This prog is used to test C/C++ API for sqlite3.It is very simple,ha!

rc= sqlite3_open("zieckey.db",&db);//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件

fprintf(stderr,"Can't open database:%s\n", sqlite3_errmsg(db));

else printf("You have opened a sqlite3 database named zieckey.db successfully!\nCongratulations! Have fun! ^-^\n");

//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg中

char*sql=" CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);";

sqlite3_exec( db, sql, 0, 0,&zErrMsg);

printf("zErrMsg=%s\n", zErrMsg);

sql="INSERT INTO\"SensorData\" VALUES(NULL, 1, 1,'200605011206', 18.9);";

sqlite3_exec( db, sql, 0, 0,&zErrMsg);

sql="INSERT INTO\"SensorData\" VALUES(NULL, 23, 45,'200605011306', 16.4);";

sqlite3_exec( db, sql, 0, 0,&zErrMsg);

sql="INSERT INTO\"SensorData\" VALUES(NULL, 34, 45,'200605011306', 15.4);";

sqlite3_exec( db, sql, 0, 0,&zErrMsg);

char**azResult;//二维数组存放结果

sql="SELECT* FROM SensorData";

sqlite3_get_table( db, sql,&azResult,&nrow,&ncolumn,&zErrMsg);

printf("row:%d column=%d\n", nrow, ncolumn);

printf("\nThe result of querying is:\n");

for( i=0; i<( nrow+ 1)* ncolumn; i++)

printf("azResult[%d]=%s\n", i, azResult[i]);

sql="DELETE FROM SensorData WHERE SensorID= 1;";

sqlite3_exec( db, sql, 0, 0,&zErrMsg);

printf("zErrMsg=%s\n", zErrMsg);

sql="SELECT* FROM SensorData";

sqlite3_get_table( db, sql,&azResult,&nrow,&ncolumn,&zErrMsg);

printf("\n\n\n\nrow:%d column=%d", nrow, ncolumn);

printf("\nAfter deleting, the result of querying is:\n");

for( i=0; i<( nrow+ 1)* ncolumn; i++)

printf("azResult[%d]=%s\n", i, azResult[i]);

sqlite3_free_table( azResult);

printf("zErrMsg=%s\n", zErrMsg);

sqlite3_close(db);//关闭数据库

另外,将sqlite3.h sqlite3.lib sqlite3.dll文件复制到我们的工程目录.

最后 Project->Settings在Link选项卡找到Object/library modules:在最后填入sqlite3.lib。

如果原来就有链接,请使用空格分隔。

You have opened a sqlite3 database named zieckey.db successfully!

Congratulations! Have fun! ^-^

After deleting, the result of querying is:

5).将 SQLite源文件中的 sqlite3.def文件添加到在工程的Source File中

是必须的, sqlite3.def这个文件的加入会生成*.lib引入库文件,这个对于*.dll文件是很重要的.否则你光有*.dll文件在程序调用的时候就不是那么方便了,因为这样你只能通过动态加载dll的方式调用dll库中函数

这个程序,我们先创建一个数据库,然后新建一个表,然后插入一些数据,

再查询看看插入的数据是否正确,然后又删除一些数据,删除后我们再查询了一下,

这个程序简单的调用 sqlite的函数接口来实现对数据库的管理,

包括创建数据库、创建表格、插入数据、查询数据、删除数据等。