概述
Android的SQLite使用介绍
一、 SQLite 的简介
Android 当中内置 SQLite 数据库,那个 SQLite 有什么特点呢?
SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的 SQL 数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同, SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保 SQLite 的二进制文件存在即可开始创建、连接和使用数据库。在于个人使用 SQLite 的体验中, SQLite 最大的优点就是高度便携,在一些小型单机应用做数据存储是十分有优势的。经过总结 SQLite 特点有以下几方面:
- 轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
- 独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
- 隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
- 跨平台
SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如: Android 。
- 多语言接口
SQLite 数据库支持多语言编程接口。
- 安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
二、 Android 中的 SQLite 相关类
1 、 SQLiteDatabase
SQLiteDatabase表示一个数据库,可以通过增加,删除,修改,查询等相关的sql 命令进行操作,同时也支持通用的一部分 sql 指令。 SQLiteDatabase 类为我们提供了很多种方法,而较常用的方法如下 :
//删除数据行的便捷方法
(int) delete(String table,String whereClause,String[] whereArgs)
//添加数据行的便捷方法
(long) insert(String table,String nullColumnHack,ContentValues values)
//更新数据行的便捷方法
(int) update(String table, ContentValues values, String whereClause, String[] whereArgs)
//执行一个 SQL 语句,可以是一个 select 或其他的 sql 语句
(void) execSQL(String sql)
//关闭数据库
(void) close()
//查询指定的数据表返回一个带游标的数据集
(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
//运行一个预置的 SQL 语句,返回带游标的数据集(与上面的语句最大的区别就是防止 SQL 注入)
(Cursor) rawQuery(String sql, String[] selectionArgs)
2 、 SQLiteOpenHelper
SQLiteOpenHelper 是 SQLiteDatabase 的一个帮助类,用来管理数据库的创建和版本的更新。 一般是建立一个类继承它,并实现它的 onCreate 和 onUpgrade 方法。
//构造方法,一般是传递一个要创建的数据库名称那么参数
SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)
//创建数据库时调用
onCreate(SQLiteDatabase db)
//版本更新时调用
onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)
//创建或打开一个只读数据库
getReadableDatabase()
//创建或打开一个读写数据库
getWritableDatabase()
三、Android 中 SQLite 的相关操作
1、SQLiteOpenHelper的打开和SQLiteDatabase的创建
当创建SQLiteOpenHelper的时候,构造函数需要提供,上下文,数据库名称,版本号等基本信息。
/* 静态Helper类,用于建立、更新和打开数据库/
private static class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
private static final String DB_CREATE = “create table ” +
DB_TABLE + ” (” + KEY_ID + ” integer primary key autoincrement, ” +
KEY_NAME+ ” text not null, ” + KEY_VOLUME+ ” integer,” + KEY_WEIGHT + ” float);”;
@Override
public void onCreate(SQLiteDatabase _db) {
_db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {
_db.execSQL(“DROP TABLE IF EXISTS ” + DB_TABLE);
onCreate(_db);
}
}
/* Open the database /
public void open() throws SQLiteException {
dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);
try {
db = dbOpenHelper.getWritableDatabase();
}
catch (SQLiteException ex) {
db = dbOpenHelper.getReadableDatabase();
}
}
2、SQLiteOpenHelper的关闭
/* Close the database /
public void close() {
if (db != null){
db.close();
db = null;
}
}
3、往数据库中添加数据
/**
* 添加数据
* */
public long insert(Storage storage) {
ContentValues newValues = new ContentValues();
newValues.put(KEY_NAME, storage.Name);
newValues.put(KEY_VOLUME, storage.Volume);
newValues.put(KEY_WEIGHT, storage.Weight);
return db.insert(DB_TABLE, null, newValues);
}
4、查询数据中数据
通过一下代码,我们可以看出
(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
这个方法的groupBy参数也是一个条件语句
/**
* 查询所有数据
* */
public Storage[] queryAllData() {
Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_VOLUME, KEY_WEIGHT},
null, null, null, null, null);
return ConvertToStorage(results);
}
/**
* 查询单个数据
* */
public Storage[] queryOneData(long id) {
Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_VOLUME, KEY_WEIGHT},
KEY_ID + “=” + id, null, null, null, null);
return ConvertToStorage(results);
}
5、删除数据库数据
/**
* 清除所有数据
* */
public long deleteAllData() {
return db.delete(DB_TABLE, null, null);
}
/**
* 清除单个数据
* */
public long deleteOneData(long id) {
return db.delete(DB_TABLE, KEY_ID + “=” + id, null);
}
6、数据更新
/**
* 更新单个数据
* */
public long updateOneData(long id , Storage people){
ContentValues updateValues = new ContentValues();
updateValues.put(KEY_NAME, people.Name);
updateValues.put(KEY_VOLUME, people.Volume);
updateValues.put(KEY_WEIGHT, people.Weight);
return db.update(DB_TABLE, updateValues, KEY_ID + “=” + id, null);
}
Demo 下载地址:http://download.csdn.net/detail/stop_pig/7884569
最后
以上就是紧张花生为你收集整理的Android的SQLite使用介绍的全部内容,希望文章能够帮你解决Android的SQLite使用介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复