Android SQLite使用
1. 介绍
SQLite是一款轻型的数据库, 是遵守ACID的关系型数据库管理系统, Android系统已经在框架中适配接口供用户使用.
2. 数据类型
SQLite采用的是动态数据类型, 会根据存入值自动判断.
SQLite具有以下五种常用的数据类型:
存储类 | 描述 |
NULL | NULL 值 |
INTEGER | 带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中 |
REAL | 浮点值,存储为 8 字节的 IEEE 浮点数字 |
TEXT | 文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储 |
BLOB | blob 数据,完全根据它的输入存储 |
详细信息参考<SQLite 数据类型>
3. 基本使用
在Android中使用SQLite涉及到下面三个类
- SQLiteOpenHelper: 抽象类. 我们通过继承该类, 然后重写数据库创建以及更新的方法. 我们还可以通过该类的对象获得数据库实例, 或者关闭数据库.
- SQLiteDatabase: 数据库访问类. 我们可以通过该类的对象来对数据库做一些增删改查的操作.
- Cursor: 游标. 有点类似于JDBC里的resultset, 结果集. 可以简单理解为指向数据库中某 一个记录的指针.
2.1 SQLiteOpenHelper
SQliteOpenHelper是一个抽象类, 用来管理数据库的创建和版本的管理
常用方法有:
SQLiteDatabase getReadableDatabase() : 得到可读的数据库, 返回SQLiteDatabase对象
SQLiteDatabase getWritableDatabase() : 得到一个可写的数据库, 返回SQLiteDataba
void onCreate(SQLiteDatabase) : 创建一个表, 当数据库第一次被建立的时候被执行
void onOpen(SQLiteDatabase) : 打开数据库, 当数据库被打开的时候被执行
void onUpgrade(SQLiteDatabase,int,int) : 当数据库需要被更新的时候执行
void close() : 关闭数据库
我们我们实行一个类(Like DBHelper)来继承SQliteOpenHelper, 同时实现onCreate和onUpgrade方法.
然后创建DBHelper实例, 通过getReadableDatabase()/getWritableDatabase()来获取数据库实例, 随后即可对数据库进行操作
2.2 SQLiteDatabase
SQLiteDatabase是一个数据库对象, 它提供了丰富的方法
/* 静态方法, 打开或创建数据库 */
SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory);
/* 插入记录 */
long insert(String table, String nullColumnHack, ContentValues values);
/* 删除记录 */
int delete(String table, String whereClause, String[] whereArgs);
/* 查询记录 */
Cursor query(boolean distinct, String table, String[] columns,
String selection, String[] selectionArgs, String groupBy,
String having, String orderBy, String limit);
/* 更新记录 */
int update(String table, ContentValues values, String whereClause, String[] whereArgs)
/* 执行SQL语句 */
void execSQL (String sql)
更多方法请参考<SQLiteDataBase的一些方法整理>
2.3 Cursor
Cursor 是每行记录的集合, 在使用时必须知道每一列的名称和数据类型
常用方法如下:
/* 关闭游标,释放资源 */
void close()
/* 在缓冲区中检索请求的列的文本,将将其存储 */
void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)
/* 返回所有列的总数 */
int getColumnCount()
/* 返回指定列的名称, 不存在返回-1 */
int getColumnIndex(String columnName)
/* 从零开始返回指定列名称, 不存在抛出IllegalArgumentException异常 */
int getColumnIndexOrThrow(String columnName)
/* 从给定的索引返回列名 */
String getColumnName(int columnIndex)
/* 返回一个字符串数组的列名 */
String[] getColumnNames()
/* 返回Cursor中的行数 */
int getCount()
/* 移动光标到第一行 */
boolean moveToFirst()
/* 移动光标到最后一行 */
boolean moveToLast()
/* 移动光标到下一行 */
boolean moveToNext()
/* 移动光标到一个绝对的位置 */
boolean moveToPosition(int position)
/* 移动光标到上一行 */
boolean moveToPrevious()
参考:
<SQLite教程>
<Android操作SQLite基本用法>
<Android数据存储与访问之-初见SQLite数据库>
<Android数据库储方式(一)-SQLite的基本操作>
Android SQLite使用的更多相关文章
- Android SQLite 通配符查询找不到参数问题
使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...
- Android+Sqlite 实现古诗阅读应用(三)
往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个 ...
- Android+Sqlite 实现古诗阅读应用(二)
传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...
- Android Sqlite 数据库版本更新
Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...
- Android SQLite总结(一) (转)
Android SQLite总结(一) 郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580
- Android sqlite管理数据库基本用法
Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...
- Android SQLite 数据库详细介绍
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...
- Android Sqlite 导入CSV文件 .
http://blog.csdn.net/johnnycode/article/details/7413111 今天遇到 Oracle 导出的12万条CSV格式数据导入 Android Sqlite ...
- Android sqlite数据库存取图片信息
Android sqlite数据库存取图片信息 存储图片:bitmap private byte[] getIconData(Bitmap bitmap){ int size = bitmap.get ...
随机推荐
- [USACO12JAN]视频游戏的连击Video Game Combos(AC自动机+DP)
Description 贝西正在打格斗游戏.游戏里只有三个按键,分别是“A”.“B”和“C”.游戏中有 N 种连击 模式,第 i 种连击模式以字符串 Si 表示,只要贝西的按键中出现了这个字符串,就算 ...
- android onCreate的两个方法
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { } override ...
- 冒泡排序&快速排序
1.排序分为以下四类共七种排序方法: 交换排序: 1) 冒泡排序 2) 快速排序 选择排序: 3) 直接选择排序 4) 堆排序 插入排序: 5) 直接插入排序 6) 希尔排序 合并排序: 7) ...
- Qsys配置生成nios系统模块
1. 本次使用的是别人写好的例程,主要研究学习,使用quartus 11打开工程 2. bdf文件是块编辑器的,相当于原理图,以前只在用NIOS的时候会用到这种方式.接下来新建一个工程,添加原理图元件 ...
- VSX-1 概述
博客搁置了一段时间,一直想写,无从下手,正好最近在做VS2010扩展方面的项目,所以写VSX系列文章以记之. 背景 现有工作是做金融行业,主要项目是一套银行综合前端系统,也就是银行平时用的最多的一个系 ...
- Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它)
如题: Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它) 如果选择“是”,那恭喜你,第二次生成的时候,引用这个 ...
- Linux认知之旅【02 装个软件玩玩】!
〇.命令行终端熟悉了吗? 1.没有仔细研究上一篇文章? 拿上看看这几个命令:ls.cd.cp.mv.rm.mkdir.touch.cat.less.恩,暂时这些够用了! 什么?你连虚拟机也没装! 感谢 ...
- 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务
孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...
- OpenCV_1.0安装包下载
OpenCV_1.0安装包下载 点击下载
- VC调试篇:ASSERT(FALSE)时怎么办?查看调用堆栈
问题简述 我们在调试程序时,经常会遇到程序中断的情况,就像下图这样. 我艹,这该怎么办,我们一下子就懵逼了.我们选择中断,常常会跳到一个莫名其妙的地方去. 正是这个断言 ASSERT(::IsWind ...