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(安卓)in Practice笔记第二章
- android TextToSpeech 源码分析
- Android(安卓)MediaExtractor setDataSource
- 【30篇突击 android】源码统计七
- android笔记
- Android(安卓)in Practice笔记第二章
- 获取 + 查看 Android(安卓)源码的 方法
- Android布局优化(四)X2C — 提升布局加载速度200%
- Android内核开发:开发板选购