Androidd SQLite总结


疑问1 SQLite是否支持同步

http://blog.csdn.net/lonelyroamer/article/details/8088411


疑问2 Android SQLite方法支持问题

onDowngrade

onUpgrade


SQLite是一种轻量级的开源数据库,其源代码可从www.sqlite.org获取,由于其源代码是C语言实现的,因此它提供的接口可以很简单地被C/C++程序使用。Java程序中如何使用它呢?本人初学Java,暂时也不了解Java程序如何调用C/C++库,但目前了解到两种方法:
(1)使用SQLite JDBC,这个使用很方便,只需要下载个jar包即可,缺点就是慢一点;
(2)使用SQLite Java Wrapper,这个据说需要安装本地库,比如windows下需要相应的dll文件,linux下需要相应的.so文件。


数据库历史:XML -> Binary File -> 文件型数据库 -> 关系型数据库

Android 内置SQLite
使用顺序
1. openHelper --> getWritableDatabase() 中会调用onCreate、onUpdate方法
2. Database
     Closable
     Cursordriver Corsor 操作的接口
     Cursor
SQLiteDatabase  目的 获取和释放
     CurosrWindow 使用Native put和get各种对象
     SqliteDatabase 关闭
     SQLiteProgram
          SQLiteQuery
          SQLiteStatement

Cursor继承体系
     CursorWrapper  哪里使用了?
     MockCursor
     CrossProcessCursor Interface
          AbstractCursor
               SQLiteCusor
          MatrixCursor
          MergeCursor

Curosr方法分类 (游标,用于指定当前指向那行数据)
     move
     get
     Observer
     is
     query
     pesponsed 
     setnotify
QueryBuilder
ContentValues
ProjectionMap


Observable
     ContentObservable
     DataSetObservable


ContentProvider 继承类中提供CRUD方法
ContentResolver
URI  链接
MIME 类型


支持事物
SQLite源码仅有4个文件、其中.c与.h文件目的是为了放入多平台,仅需2个文件
源码在External -> 具体build到什么地方可以查询makefile文件

? 连接方式实际是什么?(SQLite)
/libcore/SQLite-jdbc/


* 注意
高版本SQLite中没有此方法onUpdate


? 如何提升CRUD速度

? 如何命令控制SQLite

? 数据库操作步骤都类似
1. 创建
2. 打开
3. 操作
4. 关闭

SQLite工具:
SQLite Dev

SQLite支持:
1. 外键关联
2. 事务
3. 存储过程
4. 视图
5. 索引
6. 触发器


----------------------------------------------------------------

derby


Java SQLlite wrapper 列表
http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
sqlite4java
https://code.google.com/p/sqlite4java/
SQLite JDBC - 使用的这个
http://www.xerial.org/maven/repository/artifact/org/xerial/sqlite-jdbc/

SQLlite JDBC
https://bitbucket.org/xerial/sqlite-jdbc

SQLlite 教程
http://www.tutorialspoint.com/sqlite/sqlite_java.htm
SQLlite Java
http://www.tutorialspoint.com/sqlite/sqlite_create_database.htm








数据查看软件
SQLite Expert


1. 创建
使用sql脚本
https://github.com/talknomoney66/TalkNoMoneyShare/blob/912cfe04b2bc5e84fa525e5e7b797bfeca4527bc/misc/create_table.sql
判断是否创建
https://github.com/sefirot/androidStuff/blob/e6d6089f0aaf99cb4eae191729c5d8fee210a7a2/BerichtsheftApp/src/android/database/sqlite/SQLiteDatabase.java
通过file判断数据库是否存在
https://github.com/masonremy/461projects/blob/1169f3150e50f89da21721faa37c60c9b58aa329/461project5/consoleUtil/src/edu/uw/cs/cse461/sp12/DB461/DB461SQLite.java
使用Java代码创建
https://github.com/tranek/ChivalryServerBrowser/blob/5a4dd050c7bcc8d92bd0c092c5131454be3e497c/src/test/DatabaseTest.java


2. 日期
插入SQLite需要ISO 8601时间格式 " YYYY-MM-DD HH:MM:SS.SSS"
http://www.sqlite.org/datatype3.html
Java Date对象转换为ISO 8601时间格式
http://blog.csdn.net/brightleo/article/details/7457004


日期相关
http://www.cnblogs.com/beginor/archive/2012/05/03/2480775.html

sqlite3 表里插入系统时间(时间戳) 
blog.csdn.net/liuzhidong123/article/details/6847104










创建表
CREATE TABLE IF NOT EXISTS diary (
       id INTEGER PRIMARY KEY AUTOINCREMENT,      
       date TEXT NOT NULL,      
       top_left TEXT,
        top_center TEXT,
        top_right TEXT,
        center_left TEXT,
        center_center TEXT,
        center_right TEXT,
        bottom_left TEXT,
        bottom_center TEXT,
        bottom_right TEXT
)

插入数据
insert into diary(date, top_left) values("2013-10-16 16:10:33.111","test");



SQLite多线程读写实践及常见问题总结【半月谈投稿】
解惑是否支持同步


2014-04-03 增加SQLite同步资源



你可能感兴趣的:(Androidd SQLite总结)