android中的SQLite数据库
SQLite是android中集成的一个轻量级的数据库,该数据库支持绝大部分SQL92语法
SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,就可以使用SQLiteDatabase对象来管理、操作数据库了。
SQLiteDatabase的方法:
1、static SQLiteDatabase openDatabase(String path, CursorFactory factory, int flags):打开path文件所代表的SQLite数据库
2、static SQLiteDatabase openOrCreateDatabase(File file, CursorFactory factory):打开(或创建)file文件所代表的SQLite数据库
3、static SQLiteDatabase openOrCreateDatabase(File path, CursorFactory factory):打开(或创建)path文件所代表的SQLite数据库
4、execSQL(String sql, Object[] bindArgs):执行带占位符的SQL语句
5、execSQL(String sq):执行SQL语句
使用insert方法插入数据:
long insertOrThrow(String table, String nullColumnHack, ContentValues values)
table:表名
nullColumnHack:强行插入null值的数据列的列名
values:代表一行记录的数据
ContentValues values = new ContentValues();
values.put("name", "hemingliang");
values.put("age", "18");
db.insert("person_info",null, values);
使用update更新数据
int update(String table, ContentValues values, String whereClause, String[] whereArgs)
table:表名
values:代表更新的值
whereClause:更新的条件
whereArgs:为条件传入参数
ContentValues values = new ContentValues();
values.put("name", "hemingliang");
db.upate("person_info",values, "_id > ?", new Integer[]{20});
使用delete删除数据
delete(String table, String whereClause, String[] whereArgs)
values:代表更新的值
whereClause:更新的条件
whereArgs:为条件传入参数
db.delete("person_info", "person_name like ?", new String[]{"王_"});
使用query查询数据
Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
distinct:是否去除重复记录
table:表名
columns:需要查询的列
selection:查询条件,允许使用?占位符
selectionArgs:为查询条件传值
groupBy:分组
having:对分组过滤
orderBy:对记录排序
limit:分页
创建数据库和表:
SQLiteDatabase.openOrCreateDatabase("path", null);
path:数据库文件的路径
CursorFactory为null则代表使用默认的工厂。
上面SQLiteDatabase.openOrCreateDatabase("path", null);即可返回一个SQLiteDatabase对象,调用该对象就可以执行建表语句或者数据库操作语句。 execSQL(SQL)
SimpleCursorAdapter类:该类和SimpleAdapter类相似都是对数据进行封装,区别是SimpleAdapter构造器是负责封装集合元素为Map的List。而SimpleCursorAdapter负责封装Cursor。值得注意的是SimpleCursorAdapter封装Cursor时要求底层表的主键列的列名为_id,因为SimpleCursorAdapter只能识别列名为_id的主键。如果主键不是_id就会报异常。
事物:
beginTransaction() :开始事物
endTransaction() : 结束事物
inTransaction() :判断是否在事物中
SQLiteOpenHelper类:是android提供的一个数据库管理类,可用于管理数据库的创建和版本更新,一般都是使用该类的子类,并扩展他的onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int new Version)方法。
SQLiteDatabase getWritableDatabase():以写的方式打开数据库
SQLiteDatabase getReadableDatabase():以读的方式打开数据库
abstract void onCreate(SQLiteDatabase db):当第一次创建该数据库时回调该方法
abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本更新时回调该方法
synchronized void close():关闭所有的数据库
onCreate(SQLiteDatabase db)方法用于初次使用软件时生成数据库表,当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例时,如果数据库不存在,android系统会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次生成数据库时才会被调用,在onCeate()方法中可以生成数据库表结构及添加一些应用使用的初始化数据。
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):用于升级软件时更新数据库表结构,方法在数据库的版本发生变化时被调用,该方法调用时oldVersion代表数据库之前的版本号,newVersion代表当前数据库的版本号。当程序创建SQLiteOpenHelper对象时,必须指定一个version参数,该参数决定所使用的数据库版本号——也就是说,数据库的版本是由程序员控制的,只要某次创建SQLiteOpenHelper时指定的数据库版本号高于之前指定的版本号,系统就会自动触发onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,程序可以在onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法中根据原版本号和目标版本号进行判断,即可根据版本号进行必要的表结构更新。
一旦得到了SQLiteOpenHelper对象之后,程序无须使用SQLiteDatabase的静态方法创建实例,而且可以使用getWritableDatabase()或者getReadableDatabase()方法来获取一个用于操作数据库的SQLiteDatabase实例。
其中getWritableDatabase()方法以读写的方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,此时使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写的方式打开数据库,如果数据库磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
android中的SQLite数据库的更多相关文章
- android中与SQLite数据库相关的类
为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...
- android中滑动SQLite数据库分页加载
今天用到了android中滑动SQlit数据库分页加载技术,写了个测试工程,将代码贴出来和大家交流一下: MainActivity package com.example.testscrollsqli ...
- Android中操作SQLite数据库
我又回到了安卓的学习当中,忙来忙去终于忙的差不多有时间做自己的事情了,这感觉实在是太棒了!!本来想写android的控件以及他们的监视器的,但是我查了查android的手册,基本上都能查到,但是查有些 ...
- Android虚拟机中的sqlite数据库文件
Android虚拟机中的sqlite数据库文件 ①
- Android 开发中使用 SQLite 数据库
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能. 此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP ...
- 在Android 开发中使用 SQLite 数据库笔记
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...
- Android版本升级同时Sqlite数据库的升级及之前数据的保留
http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...
- Android中的SQLite使用学习
Android中的SQLite使用学习 SQLite是非常流行的嵌入式关系型数据库,轻载, 速度快,而且是开源.在Android中,runtime提供SQLite,所以我们可以使用SQLite,而且是 ...
随机推荐
- Java内存模型之happens-before原则
我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before,从JDK 5 开始,JMM就使用happens-before的概念来阐述 ...
- 43.和为S的连续正数序列
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多 ...
- 【问题解决方案】单个文件夹嵌套时github仓库中最外层文件夹直接显示所有嵌套文件夹名的问题
上传文件的时候遇到这样一个问题: 这么看着好像有什么问题,直觉不应该这么显示吧 折腾半天,从github新建了嵌套文件夹并同步到本地,然后从本地push了文件,结果依然显示是这样 好吧,那这个问题应该 ...
- number框
因为系统的number框无法设置样式,所以休息无聊时写了一个简单的模拟number框的插件,效果不是很完善,有一些功能可能没注意到 // 简单的模拟number框插件 // 布局: // <di ...
- elasticsearch Java High Level REST 相关操作封装
pox.xml文件添加以下内容 <dependency> <groupId>org.elasticsearch.client</groupId> <artif ...
- GenXus学习笔记——Transaction的建立
我们上次聊到 如何正确无误的的创建一个项目KB 那么这次我们就该聊一点实际的东西了(敲黑板( ̄▽ ̄)) 上回书说道我们在创建完自己的KB后 该创建自己的数据库了 首先我们先创建创建一个表 但是创建之 ...
- linux用户的基本操作2 用户密码管理
目录 linux系统的基本用户操作2 用户的扩展知识 用户密码管理 linux系统的基本用户操作2 3)使用userdel删除账户 语法 : userdel [-r] username -r 同时删除 ...
- 力扣——candy (分糖果) python实现
题目描述: 中文: 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. ...
- 回收子进程——wait/waitpid 与 信号机制
孤儿/僵尸进程——回收子进程 参考博客:https://blog.csdn.net/qq_35396127/article/details/78725915 :https://www.cnblogs. ...
- jQuery取值/赋值常见方法收集
1.文本取值.赋值 $("#id").attr("value"); $("#id").val(); $("#id).attr(&q ...