日期:2014-05-16  浏览次数:20470 次

android 对sqlite数据库的增删改查

Sqlite是android平台的一款轻量级的、嵌入式的、关系型数据库产品,以下是一些主要概念。

1.Sqlite通过文件保存数据库,创建的数据库文件默认存在在/data/data/<package>/databases/的文件夹下,一个文件就是一个数据库。 2.一个数据库包含多个表格,一个表格包含不同的字段,字段类型等等,这与SQL数据库相似。

3.Sqlite记录没有顺序的概念,不存在第一第二类的概念,通过查询获取满足条件的记录。

?

android平台下操作数据库的的相关类

1、SQLiteOpenHelper 抽象类,用于创建和管理数据库以及版本,需要创建一个子类继承,该类封装了对数据库操作的基本方法,使用方便。

2、SQLiteDatabase 数据库访问类,主要是对数据库的增删改查等常用操作,功能比SQLiteOpenHelper丰富,比如事务管理,分页等等。

3、Cursor游标类,主要用来返回返回查询记录结果。

?

本程序主要采用SQLiteDatabase类操作数 据库,介绍android 平台下Sqlite的多种使用方法。主要功能如图。

图-1 Sqlite数据库界面的操作及其功能

图-2 创建的数据库截图

?

(1.)创建一个数据库

  1. //在文件夹/data/data/<package>/databases/创建一个students.db的数据库??
  2. //该类返回一个SQLiteDatabase,对那个数据库操作,就要打开该数据库??
  3. openOrCreateDatabase("students.db",SQLiteDatabase.CREATE_IF_NECESSARY,?null);??
  4. ???

(2.)删除一个数据库

?
  1. //在Context环境中,删除students.db,该方法返回一个boolean类型??
  2. deleteDatabase("students.db");??
  3. ???

(3.)获取应用程序所有数据库的名称

?
  1. //在Context环境中,获取该应用程序的所有数据库名称(即databases文件夹下的数据库文件)??
  2. //该方法返回一个字符串数组??
  3. databaseList()??
  4. ???

(4.)重命名一个数据库

?
  1. //将数据库data.db重命名为renamedata.db??
  2. File?f?=?getDatabasePath("data.db");??
  3. File?renameFile=getDatabasePath("renamedata.db");??
  4. f.renameTo(renameFile);??
  5. ???

2.对表的操作

(1.)创建一个表(sql语句中创建)

?
  1. mDb.execSQL("create?table?if?not?exists?"+table+??
  2. "?(id?integer?primary?key?autoincrement,?"??
  3. +?"username?text?not?null,?info?text?not?null);");??
  4. ???

(2.)删除一个表

?
  1. mDb.execSQL("drop?table?if?exists?"?+?table);??
  2. ???

(3.)修改表

Sqlite是不能修改一个表的字段,不能删除一个表的字段,但是可以重命名一个表的名称,可以添加一个字段及其属性

1.)重命名表

?
  1. mDb.execSQL("alter?table?"?+?oldTable?+?"?rename?to??"+?newTableName+";");??
  2. ???

2.)添加一列

?
  1. mDb.execSQL("alter?table??"?+?table?+?"?add?column?"?+?column?+??type?+?"?;");??
  2. ???

(4.)获取一个数据库的所有表的名称

?
  1. mDb.rawQuery("select?name?from?sqlite_master?where?type='table'?order?by?name",null);??
  2. ???

3.对数据库记录的操作

(1.)添加一条记录

?
  1. ContentValues?values?=?new?ContentValues();??
  2. values.put("username",?user.getUsername());??
  3. values.put("info",?user.getInfo());??