贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。这篇文章主要讲述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 数据,完全根据它的输入存储 |
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()
【Android SQLite使用】参考:
< SQLite教程>
< Android操作SQLite基本用法>
< Android数据存储与访问之-初见SQLite数据库>
< Android数据库储方式(一)-SQLite的基本操作>
推荐阅读
- Eclipse+Maven整合开发Java项目?webapp3.0以上的Maven项目
- Android+GPS轨迹跟踪器
- Android攻城狮 WebView(显示网页)
- 文件上传时,上传到webapps目录下的文件会自动删除
- [Android&amp;Java]浅谈设计模式-代码篇(观察者模式Observer)
- 红米note3刷安卓原生
- B. Apple Tree暴力 + 数学
- 如何配置android的adb环境变量
- 转载Android 关于arm64-v8aarmeabi-v7aarmeabix86下的so文件兼容问题