Android数据库操作

来源:互联网 发布:房屋平面图绘制软件 编辑:程序博客网 时间:2024/06/11 01:49

本文同时发表在自己的博客:月城小馆Android数据库操作

Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作上有很广泛的

api所有数据库相关的接口、类都在android.databaseandroid.database.sqlite两个包下,这两个包中包含的接口和类比较多,特别是android.database我们真正用的到的没有几个,而且我们最经常使用的类或者接口都在android.database.sqlite包中。

最经常使用的是两个类和一个接口:抽象类SQLiteOpenHelper SQLiteDatabase,接口CursorSQLiteOpenHelper类主要负责创建和打开数据库,产生一个SQLiteDatabase对象;而对数据库的CRUD操作基本都是由SQLiteDatabase类中的方法完成。因此Android数据库操作中我们一般的步骤是:

(1)先使用SQLiteOpenHelper类的继承类来创建数据库并新建我们需要的数据表;

(2)从该类中拿到SQLiteDatabase

(3)利用SQLiteDatabase对象进行数据的增、删、查、改操作。

下面分别看这些接口和类:

1android.database.sqlite.SQLiteOpenHelper

这是一个抽象类,所以要使用它一定是继承它!这个类中方法不多,一看也就能明白,API文档中的摘要如下表:

Public Constructors

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

Create a helper object to create, open, and/or manage a database.

Public Methods

synchronized void

close() 

Close any open database object.

synchronized SQLiteDatabase

getReadableDatabase()

 Create and/or open a database.

synchronized SQLiteDatabase

getWritableDatabase()

Create and/or open a database that will be used for reading and writing.

abstract void

onCreate(SQLiteDatabase db)

Called when the database is created for the first time.

void

onOpen(SQLiteDatabase db)

Called when the database has been opened.

abstract void

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

Called when the database needs to be upgraded.

有一个构造方法 SQLiteOpenHelper(android.content.Context context, java.lang.String name,android.database.sqlite.SQLiteDatabase.CursorFactory factory, int version);参数不做过多的解释,CursorFactory一般直接传null就可以。按照前面说的Android数据库操作的一般步骤,就知道常用的方法是下面三个:

public void onCreate(SQLiteDatabase db)此方法在创建数据库是被调用,所以,应该把创建表的操作放到这个方法里面

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)从方法名上我们就能知道这个方法是执行更新的,没错,当version改变是系统会调用这个方法,所以在这个方法里应该执行删除现有表,然后手动调用onCreate的操作

SQLiteDatabase getReadableDatabase()可读的SQLiteDatabase对象

SQLiteDatabase getWritableDatabase()获取可写的SQLiteDatabase对象

2、android.database.sqlite.SQLiteDatabase

这个类的方法较多。主要都是关于操作数据库的方法(增、删、查、改)

execSQL(String sql, Object[] bindArgs)execSQL(String sql) 执行SQL语句,前面一个方法还可以传入绑定的参数。用这两个方法再配合传入的SQL语句可以非常方便的执行增、删、改等数据库常用操作,但是按照API的说法,这两个方法都是执行非查询语句,如果需要查询就不能使用了,因为它们也没有返回值。

ong insert(TABLE_NAME, null, contentValues)添加记录

int delete(TABLE_NAME, where, whereValue)删除记录

int update(TABLE_NAME, contentValues, where, whereValue) 更新记录

Cursor query(TABLE_NAME, null, null, null, null, null, null) 查询记录

除此之外,还有很多方法,如:beginTransaction()开始事务、endTransaction()结束事务等等,有兴趣的可以自己看api

3、android.database.Cursor

游标(接口),这个很熟悉了吧,Cursor里的方法非常多,常用的有:

boolean moveToPosition(position)将指针移动到某记录

getColumnIndex(Contacts.People.NAME)按列名获取id

int getCount()获取记录总数

boolean requery()重新查询

boolean isAfterLast()指针是否在末尾

boolean isBeforeFirst()时候是开始位置

boolean isFirst()是否是第一条记录

boolean isLast()是否是最后一条记录

还有这几个方法,一看名字就知道是什么意思了,不再多说:boolean moveToFirst()boolean moveToLast()boolean moveToNext(),功能与moveToPosition(position)类似。

另外还有一个比较重要的关于游标的适配器类:android.widget.SimpleCursorAdapter

如果经常使用列表,并且从数据库中读取数据显示在列表上,可以有两种方式,一是先从数据库中读取数据保存到一个List中,然后再用这个List构造列表的适配器;另外一种方式就是直接使用游标适配器了,这个时候这个游标适配器就发挥重要作用了,一般的使用方式为:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,

R.layout.list,

myCursor,

new String[] {DB.COL1,DB. COL2},

new int[]{ R.id.listItem1,R.id.listItem2}

);

listView.setAdapter(adapter);

从代码看使用方法和一般的List适配器基本类似,一共5个参数,具体如下:

参数1:上下文变量Context

参数2:列表使用的布局

参数3Cursor游标对象

参数4显示的字段,传入String[]

参数5显示字段使用的组件,传入int[],该数组中是TextView组件的id

下面给出一个具体的代码:

原创粉丝点击