Android的SQLite使用介绍

来源:互联网 发布:mmd动作数据百度云 编辑:程序博客网 时间:2024/05/16 13:39

Android的SQLite使用介绍

一、 SQLite 的简介

Android 当中内置 SQLite 数据库,那个 SQLite 有什么特点呢?

SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的 SQL 数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同, SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保 SQLite 的二进制文件存在即可开始创建、连接和使用数据库。在于个人使用 SQLite 的体验中, SQLite 最大的优点就是高度便携,在一些小型单机应用做数据存储是十分有优势的。经过总结 SQLite 特点有以下几方面:

  1. 轻量级

使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。

  1. 独立性

SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。

  1. 隔离性

SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。

  1. 跨平台

SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如: Android 。

  1. 多语言接口

SQLite 数据库支持多语言编程接口。

  1. 安全性

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

0 0
原创粉丝点击