使用 SQLite 数据库

摘要:
Android提供了对SQLite数据库的全面支持。每个应用程序都使用自己的数据库。应用程序中的所有类都可以按名称访问创建的数据库,但仅限于此应用程序中。建议使用继承SQLiteOpenHelper的子类,并重写onCreate()方法来创建SQLite数据库。通过执行SQLite命令创建数据库表。您可以使用getWriteableDatebase()方法获取表示数据库的读写对象,或者使用getReadableDatabase()方法获得表示数据库的只读对象,并使用此对象提供的方法对SQLite进行操作。每个SQLite查询都返回一个指向查询结果集的游标。

Android 提供了对 SQLite 数据库的完全支持。每个 App 使用自己的数据库,App 内所有类都可以通过名字访问创建的数据库,但只限于此 App 内。

推荐使用一个继承 SQLiteOpenHelper 的子类,重写 onCreate() 方法去创建一个的 SQLite 数据库。通过执

行 SQLite 命令去创建数据库表。例如:
使用 SQLite 数据库第1张使用 SQLite 数据库第2张CreateTablepackage com.wordpress.ljzh.android.hello.datastore;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

/**
 * @author LingJun
 * @date 2011-3-14
 * 
 */
public class DBHelper extends SQLiteOpenHelper {
	private SQLiteDatabase db;
	private static final int DATABASE_VERSION = 1;
	private static final String DB_NAME = "sample.db";
	private static final String TABLE_NAME = "pill";

	/**
	 * @param context
	 * @param name
	 * @param factory
	 * @param version
	 */
	public DBHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, DB_NAME, null, DATABASE_VERSION);
		db = getWritableDatabase();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite
	 * .SQLiteDatabase)
	 */
	@Override
	public void onCreate(SQLiteDatabase arg0) {
		db.execSQL("create table " + TABLE_NAME
				+ " (id integer primary key autoincrement, "
				+ " name text not null) ");
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite
	 * .SQLiteDatabase, int, int)
	 */
	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub

	}

}

然后我们可以使用定义的构造方法生成 SQLiteOpenHelper 实例。可以使用 getWritableDatebase() 方法得到可读写的代表数据库的对象(SQLiteDatabase 对象),或者使用 getReadableDatabase() 方法获取一个只读的代表数据库的对象,通过此对象提供的方法实现对 SQLite 的操作。

我们使用 SQLiteDatabase 对象的 query() 方法执行 SQLite 查询操作,query() 方法接受各种参数,如 the table to query, the projection, selection, columns, grouping, etc. 如果需要更复杂的查询,如需要给查询列别名,那我们使用 SQLiteQueryBuilder, 此对象提供了几种方便的方法用于创建查询。

使用 SQLite 数据库第3张使用 SQLite 数据库第4张CreateTable     /**
     * Select All returns a cursor
     * @return the cursor for the DB selection
     */
      public Cursor cursorSelectAll() {
		Cursor cursor = this.db.query(TABLE_NAME, // Table Name
				new String[] { "id", "name" }, // Columns to return
				null, // SQL WHERE
				null, // Selection Args
				null, // SQL GROUP BY
				null, // SQL HAVING
				"name"); // SQL ORDER BY
		return cursor;
	}

       /**
	 * Select All that returns an ArrayList
	 * @return the ArrayList for the DB selection
	 */
	public ArrayList<Friend> listSelectAll() {
		ArrayList<Friend> list = new ArrayList<Friend>();
		Cursor cursor = this.db.query(TABLE_NAME,
				new String[] { "id", "name" }, null, null, null, null, "name");
		if (cursor.moveToFirst()) {
			do {
				Friend f = new Friend();
				f.id = cursor.getString(0);
				f.name = cursor.getString(1);
				list.add(f);
			} while (cursor.moveToNext());
		}
		if (cursor != null && !cursor.isClosed()) {
			cursor.close();
		}
		return list;
	}
注:代码中 db 对象是通过 DBHelper 获取的数据库对象。

每个 SQLite 查询都是返回一个 Cursor, 它指向查询结果集。通过此 Cursor 去读取查到的行,列。

Technorati 标签: SQLite,Android

免责声明:文章转载自《使用 SQLite 数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java异常处理总结转:Android Camera2 拍照(二)——使用TextureView下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)

  原文地址:http://www.cnblogs.com/justnow/p/3382160.html (最新版本:V6.0,2017.12.11 。即将推出Xamarin移动端版本,包括 Android 和 iOS)        GGTalk开源即时通讯系统(简称GG)是QQ的高仿版,同时支持局域网和广域网,包括客户端(PC客户端、android移动...

【PostgREST 基本教程(一)】 PostgREST快速搭建

PostgREST 基本教程 PostgREST是一个可以直接将你的PostgreSQL数据库直接提供RESTful API 的稳定WEB服务。数据库结构和约束决定API的端点和操作。 使用PostgREST可以替代手动的CRUD开发。自定义的API服务经常遇到很多问题。人工编写业务逻辑经常会导致重复,忽略或者绕过数据库数据结构。对象关系映射这种抽象会导致...

PowerDesiGner数据库设计

原文地址:http://hi.baidu.com/shunkunl/blog/item/871c75ef8596faeace1b3e00.html PowerDesign:PowerDesign是 Sybase推出的主打数据库设计工具。PowerDesign致力于采用基于Entiry-Relation的数据模型,分别从概念数据模型 (Conceptual...

如何搭建本地WordPress

今天就来介绍一下如何在Windows下搭建本地WordPress。 安装前准备 1、正常的电脑 2、PHPNow http://www.phpnow.org 这里面的PHPNow环境包其实包含了常见服务器上的环境:Apache + PHP + MySQL,目前PHPNow所包含的Apache等环境版本过低,想要安装最新版本的同学可以百度一下安装方法。教程不...

中间件简介

中间件 中间件(middleware)是基础软件的一大类,中间介处于操作系统与用户的应用软件的中间。中间件在操作系统,网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效的开发和集成复杂的应用软件。 应用-----中间件-分布式系统服务-----硬件、操作系统 为什么使用中间件:从硬件来看:CPU速...

通过 redo日志恢复数据库

如果还原存档的重做日志文件和数据文件,则必须先执行介质恢复,然后才能打开数据库。归档重做日志文件中未反映在数据文件中的任何数据库事务都将应用于数据文件,从而在打开数据库之前将它们置于事务一致状态。 介质恢复需要控制文件,数据文件(通常从备份恢复)以及包含自备份数据文件以来的更改的联机和归档重做日志文件。介质恢复通常用于从介质故障中恢复,例如丢失文件或磁盘,...