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相关类

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

时间: 2024-10-07 17:35:33

Android的SQLite使用介绍的相关文章

Android 操作SQLite基本用法

在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的. 一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持 Windows/Linux/Unix等等

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

android之SQLite

android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 Android之SQLite数据库的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值. 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误. 另外, SQLite 在

[安卓基础]011存储数据(中)——sqlite语法介绍

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

Android中SQLite应用详解(转)

上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite. 现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到 SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发 人员操作SQLite,我们可以轻松的完成对数据的存取

Android数据库SQLite表内设置外键

Android数据库SQLite表内设置外键 介绍 Android默认的数据是SQLite,但SQLite3.6.19之前(在2.2版本中使用的是3.6.22,因此如果你的应用只兼容到2.2版本就可以放心使用外键功能)是不支持外键的,如果有两张表需要关联,用外键是最省事的,但不支持的话怎么办呢?这里就有一个解决办法,就是用事务将两张表关联起来,并且最后生成一张视图. 现有两张表 Employees Dept 视图 ViewEmps:显示雇员信息和他所在的部门 创建数据库 自定义一个辅助类继承SQ

android之SQLite数据库应用(二)

今天让我们总结下SQLite数据库在android系统中的应用.首先来看一些数据库的介绍: SQLite数据库是一种无类型的数据库,这就代表你可以保存任何类型的数据到任何表中的任何列哦,无论这个表在create的时候该列被声明成什么类型.因为SQLite在执行数据库建表语句的时候,会自动的将类型忽略的哦. 它是一种用C语言编写的嵌入式数据库,它是一个轻量级的数据库,在一些基础简单的语句处理上要比oracle/mysql快很多,而且其对内存的要求很低. 注意:这里一定要注意,SQLite数据库在一

SQLite 基础介绍

1.什么是SQLite ? -> SQLite简介 SQLite 是一个进程内的库,是一种轻量级的.自给自足的.无服务器的.无需配置的,事务性的SQL数据库引擎.和他其他的数据库一样,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接.SQLite可以直接访问其存储文件. SQLite 是一个开源的嵌入式关系数据库. 其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保SQLite的二

【转载】android之SQLite数据库insert操作

原博文地址:http://blog.csdn.net/jason0539/article/details/9977175 原型: long android.database.sqlite.SQLiteDatabase.insert(String table, String nullColumnHack, ContentValues values) 参数介绍: table: 要插入数据的表的名称 nullColumnHack:当values参数为空或者里面没有内容的时候,我们insert是会失败的