Android SQLite数据库操作示例

SQLite介绍

SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能。此外,它还是开源的,任何人都可以使用它。
SQLite由以下几个组件组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。
SQLite支持的数据类型参考链接:http://blog.csdn.net/wzy_1988/article/details/36005947
Android在运行时(run-time)集成了SQLite,所以每个Android应用程序都可以使用SQLite数据库。对于熟悉SQL的开发人员来说,在Android开发中使用SQLite相当简单。但是,由于JDBC会消耗太多的系统资源,所以JDBC对于手机这种内存受限设备来说并不合适。因此,Android提供了一些新的API来使用SQLite数据库。
数据库存储在/data/data/项目包名/databases/ 目录下。

Android开发中使用SQLite数据库

Activity可以使用Content Provider或者 Service访问一个数据库。

创建数据库

Android不自动提供数据库。在Android应用程序中使用SQLite,必须自己创建数据库,然后创建表、索引、填充数据。Android提供了一个SQLiteOpenHelper帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法: 构造函数,调用父类SQLiteOpenHelper的构造函数。这个方法需要四个参数:上下文环境,数据库名字,一个可选的游标工厂(通常是NULL),一个代表你正在使用的数据库模型版本的整数。onCreate()方法,它需要一个SQLiteDatabase对象作为参数,根据需要对这个对象填充表和初始化数据。onUpgrade()方法,它需要三个参数,一个SQLiteDatabase对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变为新的模型。
下面代码展示了如何继承SQLiteOpenHelper创建数据库:

import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class MyDBHelper extends SQLiteOpenHelper { private static final String COLUMN_ID = "_id"; public static final String TABLE_NAME = "category"; private static final String DATABASE_NAME = "category.db"; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + " fid TEXT, token TEXT, cid TEXT, cname TEXT)"; public CategoryDBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); onCreate(db); } }

增删改查数据库

因为SQLite支持标准的SQL语句,因此我们可以用标准SQL语句才增删改查数据库,推荐使用占位符的sql语句,看起来更加清爽,下面是我的代码示例:

public class CategoryDBManager { private MyDBHelper myDBHelper; private static CategoryDBManager categoryDBManager = null; private CategoryDBManager(Context context) { myDBHelper = new MyDBHelper(context); } /** * 单例模式 */ public static CategoryDBManager getInstance(Context context) { if (categoryDBManager == null) { synchronized (CategoryDBManager.class) { if (categoryDBManager == null) { categoryDBManager = new CategoryDBManager(context); } } } return categoryDBManager; } public SQLiteDatabase getDB() { SQLiteDatabase db = myDBHelper.getWritableDatabase(); while (db.isDbLockedByCurrentThread()) { } return db; } public void insertLists(String token, String fid, List lists) { // 打开可写数据库 SQLiteDatabase db = getDB(); for (PlateCategoryData pd : lists) { // 执行SQL语句,替换占位符 db.execSQL("insert into " + MyDBHelper.TABLE_NAME + "(cid, cname, fid, token) values(?, ?, ?, ?)", new Object[] { pd.getId(), pd.getName(), fid, token }); } // 释放资源 db.close(); } public ArrayList getLists(String fid, String token) { ArrayList datas = new ArrayList(); SQLiteDatabase db = getDB(); // 执行原始查询,得到cursor String querySql = "select cid, cname from " + MyDBHelper.TABLE_NAME + " where fid = ? and token = ?"; Cursor cursor = db.rawQuery(querySql, new String[] { fid, token }); // 移动cursor到第一个数据(无数据返回false) if (cursor.moveToFirst()) { // while判断是否有下一条数据 do { PlateCategoryData pd = new PlateCategoryData(cursor.getString(cursor.getColumnIndex("cid")), cursor.getString(cursor.getColumnIndex("cname"))); datas.add(pd); } while (cursor.moveToNext()); } cursor.close(); db.close(); return datas; } public void updateLists(String fid, String token, ArrayList datas) { SQLiteDatabase db = getDB(); for (PlateCategoryData pd : datas) { String sql = "update " + MyDBHelper.TABLE_NAME + " set cid = ?, cname = ? where fid = ? and token = ?"; db.execSQL(sql, new Object[] { pd.getId(), pd.getName(), fid, token }); } db.close(); } public void deleteLists(String fid, String token) { SQLiteDatabase db = getDB(); db.execSQL("delete from " + MyDBHelper.TABLE_NAME + " where fid = ? and token = ?", new Object[] { fid, token }); db.close(); } public void closeDB() { SQLiteDatabase db = getDB(); if (db.isOpen()) { myDBHelper.close(); db.close(); } } }

参考链接

[1] http://www.ibm.com/developerworks/cn/opensource/os-cn-sqlite/

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
上一篇:设计模式之命令模式(Command)摘录
下一篇:Android核心基础(手机卫士的一个知识点总结)
相关文章

Android判断当前网络是否可用--示例代

android播放音乐示例

自定义组件示例:使用attrs.xml文件定

Android---Frame动画示例

Android ApiDemos示例解析(1):创建A

Android ApiDemos示例解析(2): Simp

Android ApiDemos示例解析(3): App-

Android ApiDemos示例解析(4):App->A

Android ApiDemos示例解析(5):App->A

Android ApiDemos示例解析(6):App->A

图文推荐
Android SQLite数据库操作示例
Android中数据存储方
Android SQLite数据库操作示例
Android OTA升级包制
Android SQLite数据库操作示例
Android从普通发送和
Android SQLite数据库操作示例
Android开发:Parall

分类:默认分类 时间:2012-01-01 人气:18
本文关键词:
分享到:

相关文章

  • Android之旅十二 Android中的SQLite数据存储及单元测试 2012-01-06

    android中的另一种存储方式就是使用sqlite,SQLite是一个嵌入式数据库引擎,针对于内存资源有限的设备提供一种高效的数据库引擎,它不像我们的mysql、sqlserver、oracle等数据库,它没有服务器进程,所有的内容包含在同一个单文件中,该文件是跨平台的,可以自由复制,下来带大家来进入我们的学习旅程吧! 我们在进行sqlite操作数据的时候,使用的一个主要的类就是SQLiteDatabase,它提供了对数据的查询、新增、修改等各种方法,我们在使用的时候一般和它的一个帮助类SQL

  • android开发之使用SQLite数据库(db文件) 2012-03-14

    在开发中,有时需要使用db文件数据库,所以就需要将其导入项目,再将其使用程序写入到应用的db文件下使用。 代码很简单,可以拿来直接使用。 要使用需要两个步骤: 1.创建raw文件,导入db文件,如下: 2.代码vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">public class DBOpenHelper { private final int BUFFER_SIZE = 400000; public static final String DB_NAME

  • Android下使用SQLite数据库 2012-05-25

    1.SQLite数据库的特点 安卓手机自带, 小巧, 适合在手机中使用 不区分数据类型(主键除外) SQL语句和MySQL几乎相同 SQLite不使用JDBC连接, 使用的是Android自有的API 每个数据库对应一个文件 * 2.创建数据库 定义类继承SQLiteOpenHelper, 实现onCreate(), onUpgrade() 创建该类对象, 调用getWritableDatabse()或者getReadableDatabse() 情况1: 数据库文件不存在, 创建文件, 打开数据

  • Android开发之SQLIte数据库介绍 2012-06-03

    Android数据库 一、关系型数据库SQLIte   每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用,Mozilla firefox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。 S

  • android SQLite 使用实例 2012-07-07

    Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果想要开发 Android 应用程序,需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。在一般程序中使用数据库的过程都可以框架化,套路化,实例如下: 表说明: 1.班级 classes: class_id 主键 class_name 2.学生 students: student_id 主键 student_name

  • Android学习-----如何使用sqlite进行后台数据交互,sqlite入门使用例程 2013-06-24

     SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。对数熟悉 SQL 的开发人员来时,使用 SQLite 相当简单。可以,由于 JDBC 不适合手机这种内存受限设备,所以 Android 开发人员需要学习新的 API 来使用 SQLite。本文以一个注册登录Demo简单介绍一下sqlite入门使用。 先上一下运行结果:(请忽略丑陋的界面~~)

  • Android数据库 之 SQLite数据库 2014-05-23

    一、关系型数据库SQLIte   每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。 SQLite体系结构图如

  • Android开发之SQLite数据库详解 2014-05-30

    Android开发之SQLite数据库详解 请尊重他人的劳动成果,转载请注明出处:Android开发之SQLite数据库详解 http://blog.csdn.net/fengyuzhengfan/article/details/40194393 Android系统集成了一个轻量级的数据库:SQLite, SQLite并不想成为像Oracle、MySQL那样的专业数据库。SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机、PDA等)适量数据存取。 虽然SQLite支持绝大

  • Android SQLite开发教程(2): android.database.sqlite类定义 2014-07-12

    和通常的RDBMS不同的是,Sqlite 是以库函数的形式提供的,而不是以单独的进程来提供数据库服务(如Desktop平台上SQL Server,这样做的效果是,由应用程序创建的SQLite数据库成为应用的一个部分,从而降低了外部依赖,减小数据访问的延迟,简化了数据的事务处理时的同步和锁定操作。 在Android平台上SQLite 支持定义在android.database.sqlite (其实是Android系统中SQLite C函数的Java接口),其主要的类和接口的类关系图如下: 其中Co

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.060 (s). 10 q(s)