前段时间在看Android方面的书,买了本《第一行代码:Android》,手把手教学,感觉还行,就是第一次在对着书上的内容敲代码的时候经常出错,坑死我了o(╯□╰)o 不过后来去作者的csdn博客上找到了对应的源码,以后就对着作者的博客+源码,然后翻阅实体书进行Android的学习了。
上面扯了一堆废话,下面进入本文正题,在Android中使用都是SQLite数据库(听说是这样的,没有深究),之前基本上只用过MSSQL和MySQL,不清楚怎么弄SQLite,也许以后会碰到,先明白个大概,以后碰到了再深究,先来点简单的内容:
SQLITE查询数据库表结构
遇到有未知结构的数据库时,可以通过以下方法来或许数据库中详细信息:
- .table #该命令可以查询当前数据库中所有的表名(等价于mysql中的show tables)
- select * from sqlite_master WHERE type=”table”; #可以查询到当前数据库中所有表的详细结构信息(等价于mysql中的desc tablename)
1)创建数据库文件:
>sqlite3 d:test.db 回车
就生成了一个test.db在d盘。
这样同时也在SQLite3中挂载上了这个test.db
2)用.help可以看看有什么命令
>.help 回车即可
3)可以在这里直接输入SQL语句创建表格,用“;”结束,然后回车就可以看到了
4)看看数据库中有多少表
>.tables
5)看表结构
>.schema 表名
6)看看目前挂载了哪些数据库
>.database
7)如果要把查询输出到文件
>.output 文件名
> 查询语句;
查询结果就输出到了文件query.txt(具体位置依赖于打开sqlite时的CMD路径)
把查询结果用屏幕输出
>.output stdout
8)把表结构输出,同时索引也会输出
.dump 表名
9)退出
>.exit 或者.quit
普通SQL操作遵循通用标准SQL语句。
如果不想使用命令行,可以使用一个叫做“SQLite Database Browser”的软件,可视化编辑,下载地址:http://sourceforge.net/projects/sqlitebrowser/files/sqlitebrowser/
《 “SQLite数据库的一些操作” 》 有 4 条评论
如何将一个SQL或CSV文件导入sqlite数据库?
一、SQL文件
`sqlite> .read filename.sql`
或
`cat filename.sql | sqlite3 database.db
`
二、CSV文件
`sqlite> .mode csv table_name
sqlite> .import filename.csv table_name
`
http://stackoverflow.com/questions/1045910/how-can-i-import-load-a-sql-or-csv-file-into-sqlite
http://stackoverflow.com/questions/14947916/import-csv-to-sqlite
Magellan(麦哲伦)是Tencent Blade Team发现的一个存在于SQLite中的远程执行代码漏洞。
https://blade.tencent.com/magellan/
https://www.sqlite.org/releaselog/3_26_0.html
`
(1) 怎么判断是否受到漏洞的影响?
如果您使用的是包含了SQLite数据库或Chromium的设备或软件,则会受到影响,比如各类PC/移动终端/IoT设备。
(2) 此漏洞的危害是什么?
远程代码执行,泄漏程序内存地址或导致程序崩溃。
(3) 此漏洞是否能够成功利用?
是的,我们成功地使用此漏洞攻破了Google Home,目前我们还没有计划披露漏洞利用代码。
(4) 利用此漏洞的条件是什么?
可以远程触发此漏洞,例如在浏览器中访问特定网页。
(5) “Magellan”有公开用于攻击的案例吗?
我们还没有发现此漏洞被公开利用。
(6) 是否有修复方案?
我们已向Google与SQLite官方报告了此漏洞的所有详细信息,目前他们已经迅速修复了此漏洞( commit )。如果您的产品使用了Chromium浏览器内核,请更新至官方最新稳定版本71.0.3578.80( Release updates)。如果您的产品使用了SQLite数据库,请更新至最新的3.26.0版本 ( Release updates)。
`
Date And Time Functions
https://www.sqlite.org/lang_datefunc.html
`
$ sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db ‘select client,auth_value,last_modified from access where service = “kTCCServiceSystemPolicyAllFiles”‘
$ sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db ‘select client,auth_value,datetime(last_modified,”unixepoch”,”localtime”) from access where service = “kTCCServiceSystemPolicyAllFiles”‘
`
理查德·希普《SQLite 不为人知的故事》
https://corecursive.com/066-sqlite-with-richard-hipp/
`
我写 SQLite 的时候,从来没人教过我 B 树的知识。我需要自己实现 B 树,我就从书架取下高德纳的《计算机编程艺术》,找到了 B 树的章节。他描述了算法,我就照着实现。
有趣的是,高德纳详细介绍了搜索 B 树和插入 B 树的算法,没有提供从 B 树删除数据的算法,这是放在本章末尾的练习。所以我在实现自己的 B 树之前,还必须先做完该章的练习。谢谢高德纳,我真的很感激。
`