android中使用sqlite命令编辑数据库

本文介绍了在手机上查看本地数据库的方法。需先获取手机超级用户权限,通过adb命令进入手机系统,再进入数据库所在目录,使用sqlite命令查看数据库。还详细讲解了sqlite命令的使用,包括查看表结构、使用SQL命令进行CURD操作及聚合函数的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近为了方便开发,经常需要查看数据库,但是每次都将db文件导出过程太繁琐,于是便有了这篇文章,但是需要注意的是,我们需要手机的超级用户权限才能查看本地数据库,这里也是一个坑,大家可以自行搜索相关资料。有了超级用户权限后,我们就可以开始下面的操作了。

进入手机数据库

首先,使用adb命令进入到手机系统当中,进入系统后执行su命令,若此时手机root了在命令窗口就会出现#号表示,拥有手机有用root权限。

MartindeMacBook-Pro:qmoorassistant martin$ adb shell
vince:/ # su
vince:/ # 

获取root权限后,进入到我们数据库存在的目录,一般的规则是/data/data/[app packageName]/database下,使用ls查看文件,命令展示:

vince:/data/data/com.martin.database/databases # ls
test.db test.db-journal 

其中后缀名为journal的文件是日志文件,我们不用管。直接使用sqlite命令去查看数据库,命令展示:

sqlite3 test.db
Enter ".help" for usage hints.
sqlite> .help
.auth ON|OFF           Show authorizer callbacks
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail on|off           Stop after hitting an error.  Default OFF
.binary on|off         Turn binary output on or off.  Default OFF

我们使用.help帮助命令,会有很多系统命令,这里我只介绍一些我平常开发中使用的。

sqlite命令的使用

首先进入数据库中,肯定需要查看数据库中的表,命令展示:

sqlite> .table
android_metadata  table_schema      wxaccount         wxmediafile   

其中wxaccountwxmediafile是我在项目中创建的表。平时我们在创建表的时候,肯定都给字段定义类型,这里我们可以通过命令查看。

查看表结构

命令:pragma table_info(TABLE_NAME)

sqlite> pragma table_info(wxaccount)  ;
0|id|integer|0||1
1|lastmsgid|text|0||0
2|wxuin|text|0||0

显示很容易看,这里就不多解释了。这里的显示格式若不习惯的,sqlite也提供了显示格式命令。

sqlite> .mode line
sqlite> pragma table_info(wxaccount);
       cid = 0
      name = id
      type = integer
   notnull = 0
dflt_value = 
        pk = 1
....
     cid = 1
      name = test1
      type = text
   notnull = 0
dflt_value = 
        pk = 0

这里就会清楚很多,写到这里,我想大家应该很清楚如何进入本地数据库了,下面是我使用sql查看数据的操作,都比较简单,若不敢兴趣可以自行略过。

使用sql命令CURD

sqlite3支持基本的sql命令,sql命令不熟悉的可以去查看这个链接SQL 教程

查询

  • 命令
SELECT column_name,column_name
FROM table_name;
  • 用例
sqlite> select * from wxaccount;
               id = 1
        lastmsgid = 
lastoriginalmsgid = 
   lastthumbmsgid = 
       wxpassword = 
            wxuin = 
            test1 = 

模糊查询

  • 语法
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
  • 查询以.amrmp4结尾的数据
select * from wxmediafile  where thumbimgossid like '%.amr';
select * from wxmediafile  where bigimgossid like '%.mp4';

插入

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
  • 只插入type=3的数据
INSERT INTO wxmediafile (type) VALUES (3);

修改

  • 语法
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
  • 修改wxmediafile的thumbimgossid
update wxaccount set lastmsgid='' where wxuin='1713258295';
循环修改
  • 语法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
  • 循环修改

1.首先查询表中以MP3结尾的数据
2.通过id,循环修改thumbimgossid为空

update wxmediafile set thumbimgossid='' where id IN (select id from wxmediafile where thumbimgossid like '%.mp3');

删除

  • delete from [table_name];
delete from wxmediafile

聚合函数

count

-- 查询所有记录的条数
select count(*) from access_log;

-- 查询websites 表中 alexa列中不为空的记录的条数
select count(alexa) from websites;

-- 查询websites表中 country列中不重复的记录条数
select count(distinct country) from websites;

查询数据库中 bigimgossid不为null并且originalFileUploadFlag=0的所有条数;

 select count(*) from wxmediafile where bigimgossid IS NOT NULL AND originalFileUploadFlag=0;

查询数据库中 bigimgossid不为null并且originalFileUploadFlag=0的所有条数;

 select count(*) from wxmediafile where thumbimgossid IS NOT NULL AND thumbfileuploadflag=0;

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值