Android SQLite总结
来源:互联网 发布:东京著衣淘宝店怎么了 编辑:程序博客网 时间:2024/05/16 11:10
SQLite 第一个Alpha版本诞生于2000年5月,它是一款轻型数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用,它占用的资源非常少,在嵌入式设备中,可能只需要几百kb内存就够了。也许这正是Android系统要采用SQLite数据库的原因之一吧。
SQLite 数据库是 D.Richard Hipp 用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB。它具有如下特征。
1.轻量级
SQLite和C/S模式的数据库软件不同,它是进程内的数据引擎,因此不存在数据库的客户端和服务器。使用SQLite 一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也相当小。
2.独立性
SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”。所以在部署的时候能省去不少麻烦。
3.隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器) 都包含在一个文件内,方便管理和维护。
4.跨平台
SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统外,很多手机系统同样可以运行,比如Android、Windows Mobile、Sysbin、Palm等。
5.多语言接口
SQLite 数据库支持很多语言接口,比如C/C++、java、Python、dotNet、Ruby、Perl等,得到更多开发者的喜爱。
6.安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写操作前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。
SQLite 数据库是 D.Richard Hipp 用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB。它具有如下特征。
1.轻量级
SQLite和C/S模式的数据库软件不同,它是进程内的数据引擎,因此不存在数据库的客户端和服务器。使用SQLite 一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也相当小。
2.独立性
SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”。所以在部署的时候能省去不少麻烦。
3.隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器) 都包含在一个文件内,方便管理和维护。
4.跨平台
SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统外,很多手机系统同样可以运行,比如Android、Windows Mobile、Sysbin、Palm等。
5.多语言接口
SQLite 数据库支持很多语言接口,比如C/C++、java、Python、dotNet、Ruby、Perl等,得到更多开发者的喜爱。
6.安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写操作前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。
数据库基础概念
SQlite 通过文件来保存数据库,一个文件就是一个数据库。
数据库里又包含数个表格;
每个表格里面包含了多个记录;
每个记录由多个字段组成;
每个字段都有其对应的值;
每个值都可以指定类型。
数据库名称即文件名;表格有自己的名称;记录没有名称;每个字段都有名称。在SQlite中,记录没有顺序的概念,不存在第一、第二此类的概念;只能通过查询来获取满足条件的记录。我们通过执行SQL指令来操作数据库。
Android平台下数据库相关类
SQLiteOpenHelper 抽象类:通过从此类继承实现用户类,来提供数据库打开、关闭等操作函数。
SQLiteDatabase 数据库访问类:执行对数据库的插入记录、查询记录等操作。
SQLiteCursor 查询结构操作类:用来访问查询结果中的记录。
创建数据库
假设使用一个数据库存储一个表格,表格中保存了多条记录,每个记录包含3个字段,分别是: ID、name、age。 从SQLiteOpenHelper继承实现一个类,所有对数据库的操作都封装在此类中。
构造函数:
java代码:
此函数中的参数name就是数据库名称,也就是数据库文件名; version则从1开始,当将来数据库的表格以及字段发生变化时,用户可以提高此version,从而触发onUpgrade()达到旧数据升级的效果。在onCreate函数中创建表格:
java代码:
onCreate函数只会在数据库第一次创建时调用,所以此处适合做一些数据库初始化操作。上面的函数最终实际上效果是执行了SQL语句:
java代码:
向表格中添加数据有两种方式可以向表格中添加数据,一种是通过SQLiteDatabase提供的execSQL函数直接执行SQL指令; 一种是通过SQLiteDatabase提供的insert函数,此函数把SQL语句进行了封装方便用户使用。
通过execSQL("INSERT INTO mytable VALUES('idStr', 'nameStr', 20);");可以插入一条记录,
当插入记录出错时会抛出异常需要处理。
通过insert函数:insert函数需要一个ContentValues类型的值,此类型类似于hashmap,一个key,一个值配成一对。key就是字段名。
java代码:
如果v中的key没有完全的指定所有字段,比如少name或者少id,那么记录能否被成功插入要根据表格创建时的字段限制来决定, 比如少name,那么此记录会插入,只是name字段的值为NULL;如果少id,那么记录不会被插入,因为创建时指定了NOT NULL.可以通过以下指令来查看结果:adb shell执行后进入shell;cd /data/data/cn.demo.sqlsqlite3 database.db 进入了sqlite操作界面。.help可以看到命令帮助。
.dump 可以看到数据库中的数据。
为了方便使用,可以自定义一个insert函数,将值通过参数传入,而ContentValues设置则在函数内部实现。
为了方便使用,可以自定义一个insert函数,将值通过参数传入,而ContentValues设置则在函数内部实现。
java代码:
从表格中查询记录SQL语句:SELECT column list FROM table WHERE expr ORDER BY column list; 通过SQLiteDatabase类的query()函数
Java代码:
Parameters:
table 要更新的记录所在的表名。
values 要更新的字段值。
whereClause Where子句。更新哪些记录。
whereArgs Where子句中的'?'替换串。
执行update操作时,如果只给部分字段赋值,那么update后,没有赋值的字段仍然保持原来的值不变。从表格中删除记录:
java代码:
0 0
- ANDROID SQLITE学习总结
- Android SQLite总结
- Android SQLite总结
- Android SQLite总结(一)
- Android SQLite总结(一)
- Android SQLite总结
- Android SQLite总结[转载]
- Android SQLite总结
- Android SQLite总结
- Android-SQLite使用总结
- android-SQLite数据库总结
- Android SQlite 总结
- Android SQLite总结
- android SQLite数据库总结
- Android SQLite总结(一)
- Android SQLite总结
- Android-SQLite常见问题总结
- Android SQLite 使用总结
- go语言入门
- web报表工具FineReport的SQL编辑框的语法简介
- Android基础——从assets拷贝文件
- ActiveMQ集群:网络连接模式(network connector)详解
- TCP的状态迁移
- Android SQLite总结
- 前端的资源一些
- 智能指针的那些事
- Wireshark抓包工具使用教程以及常用抓包规则
- [BZOJ1004]HNOI2008 Cards |polya|置换群|DP|乘法逆元
- StreamReader缓冲引起BaseStream.Position不能反映当前Read位置的问题
- Delphi.TQuery
- 滚屏截图软件
- 第六周 项目五-友元类