Android的数据库--sqlite(一)
16lz
2021-12-04
Android中与sqlite相关的代码并不多,这里先列出来:
external/sqlite/
|-- android
| |-- Android.mk
| |-- NOTICE
| |-- PhoneNumberUtils.cpp
| |-- PhoneNumberUtils.h
| |-- PhoneticStringUtils.cpp
| |-- PhoneticStringUtils.h
| |-- PhoneticStringUtilsTest.cpp
| |-- sqlite3_android.cpp
| |-- sqlite3_android.h
| `-- tags
`-- dist
|-- Android.mk
|-- MODULE_LICENSE_PUBLIC_DOMAIN
|-- NOTICE
|-- shell.c
|-- sqlite3.c
|-- sqlite3.h
`-- version
android:
PhoneNumberUtils.cpp 电话号码比较的相关函数;
PhoneticStringUtils.cpp Unicode文本排序、比较等一系列函数;
sqlite3_android.cpp sqlite扩展函数的注册。
这个目录里编译完后是一个静态库libsqlite3_android.a。
dist:
dist里是sqlite3数据库的代码。Android中使用的是3.5.9版本的sqlite,这是2008.05的Release。这里仅有三个源码文件,觉得很奇怪,sqlite的源代码中少说也有上百个源码文件吧,难道是被GOOGLE精简了?如下:
$ wc -l *.[ch]
2102 shell.c
87283 sqlite3.c
5648 sqlite3.h
其中sqlite3.c这个文件非常大,共87283行,2.9M!看了一下sqlite3.c中的内容,是把sqlite3里所有的源码文件做了合并,并到这一个文件里面了。这样做的原因在源码里也作了解释:把代码合并了比起分开编译更有利于编译器做优化,在这里至少有5%的性能提升。这样做的确很有创意,但是做这个合并一定很费事,以后如果没有大的改进的话应该不会轻易升级sqlite了。
编译情况如下:
shell.c --> sqlite3 依赖libsqlite.so
sqlite3.c --> libsqlite.so 依赖libsqlite3_android.a
扩展函数加载:
扩展函数的加载放在shell.c里,代码如下:
open_db(……)
{
……
#ifndef NO_ANDROID_FUNCS
register_android_functions(db, 0); //注册扩展函数
register_localized_collators(db, "", 0); //排序相关
#endif
……
}
external/sqlite/
|-- android
| |-- Android.mk
| |-- NOTICE
| |-- PhoneNumberUtils.cpp
| |-- PhoneNumberUtils.h
| |-- PhoneticStringUtils.cpp
| |-- PhoneticStringUtils.h
| |-- PhoneticStringUtilsTest.cpp
| |-- sqlite3_android.cpp
| |-- sqlite3_android.h
| `-- tags
`-- dist
|-- Android.mk
|-- MODULE_LICENSE_PUBLIC_DOMAIN
|-- NOTICE
|-- shell.c
|-- sqlite3.c
|-- sqlite3.h
`-- version
android:
PhoneNumberUtils.cpp 电话号码比较的相关函数;
PhoneticStringUtils.cpp Unicode文本排序、比较等一系列函数;
sqlite3_android.cpp sqlite扩展函数的注册。
这个目录里编译完后是一个静态库libsqlite3_android.a。
dist:
dist里是sqlite3数据库的代码。Android中使用的是3.5.9版本的sqlite,这是2008.05的Release。这里仅有三个源码文件,觉得很奇怪,sqlite的源代码中少说也有上百个源码文件吧,难道是被GOOGLE精简了?如下:
$ wc -l *.[ch]
2102 shell.c
87283 sqlite3.c
5648 sqlite3.h
其中sqlite3.c这个文件非常大,共87283行,2.9M!看了一下sqlite3.c中的内容,是把sqlite3里所有的源码文件做了合并,并到这一个文件里面了。这样做的原因在源码里也作了解释:把代码合并了比起分开编译更有利于编译器做优化,在这里至少有5%的性能提升。这样做的确很有创意,但是做这个合并一定很费事,以后如果没有大的改进的话应该不会轻易升级sqlite了。
编译情况如下:
shell.c --> sqlite3 依赖libsqlite.so
sqlite3.c --> libsqlite.so 依赖libsqlite3_android.a
扩展函数加载:
扩展函数的加载放在shell.c里,代码如下:
open_db(……)
{
……
#ifndef NO_ANDROID_FUNCS
register_android_functions(db, 0); //注册扩展函数
register_localized_collators(db, "", 0); //排序相关
#endif
……
}
更多相关文章
- Android(安卓)读取和保存文件(手机内置存储器)
- Android自学笔记(番外篇):全面搭建Linux环境(六)——Android的安装与
- Android控件及API说明(三)
- android系统定制从听说到入门二
- Android源码博文集锦2
- Android第一行代码笔记
- 深度解析Android中字体设置
- android 字体的使用
- 如何下载android源码与android内核源码