Android的SQLite使用介绍

Android的SQLite使用介绍

一、SQLite的简介

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

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

 

1.轻量级

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

2.独立性

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

3.隔离性

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

4.跨平台

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

5.多语言接口

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

6.安全性

SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。

二、Android 中的SQLite相关类

1SQLiteDatabase

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)

 

2SQLiteOpenHelper

SQLiteOpenHelperSQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreateonUpgrade方法。

 

//构造方法,一般是传递一个要创建的数据库名称那么参数

SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)

//创建数据库时调用

onCreate(SQLiteDatabase db)

//版本更新时调用

onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)

//创建或打开一个只读数据库

getReadableDatabase()

//创建或打开一个读写数据库

getWritableDatabase()

 

三、AndroidSQLite的相关操作

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。