Android SQLite乐学成语项目之数据库存储

一.SQLite介绍

1SQLite是一种轻量级的小型数据库,虽然比较小,但是功能相对比较完善,一些常见的数据库基本功能也具有,在现在的嵌入式系统中使用该数据库的比较多,因为它占用系统资源很少。Android系统中也不例外,也是采用SQLite,本节中就学习下在andorid中怎样使用该数据库来存放数据,并且对SQLite完成简单的新建,更新,查询,删除等操作。

3.SQLite支持 五种数据类型:NULL,INTEGER,REAL(浮点数),TEXT(字符串文本)和BLOB(二进制对象),可以对varchar,char等其他数据类型可以进行保存;SQLite有个显著的特点: 可以把各种数据类型的数据保存到任何字段中,不受字段所声明的数据类型的影响。 另外,SQLite 在解析CREATE TABLE 语句时, 会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息。

二.相关的类

1. SQLiteOpenHelper:抽象类,可以通过继承该类,重写数据库创建以及更新的方法, 通过该类的对象获得数据库实例,或者关闭数据库。
2. SQLiteDatabase:数据库访问类:可以通过该类的对象来对数据库做一些增删改查的操作。
3. Cursor:游标,类似于JDBC里的resultset(结果集),可以简单理解为指向数据库中某 一个记录的指针。

三.创建数据库

为了能够更加方便的管理数据库,专门提供了SQLiteOpenHelper帮助类,借助这个类就可以非常简单的对数据库进行常和升级。
首先要知道SQLiteOpenHelper是一个抽象类,如果使用它的话,需要创建一个自己的帮助类去继承它。
SQLiteOpenHelper中的两个抽象方法是:
1.onCreate();
2.onUpgrade();
必须在自己的帮助类里重写这两个方法,然后分别在这两个 方法中去实现创建和升级数据库。
SQLiteOpenHelper中两个非常重要的实例方法:
1.getReadableDatabase();
2.getWriteableDatabase();

四.程序

package com.example.happyidiom.db;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import com.example.happyidioms.R;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;

public class DBOpenHelper {
	
	private final int BUFFER_SIZE=400000;
	public static final String DB_NAME="idioms.db";
	public static final String PACKAGE_NAME="com.example.happyidiom";
	public static final String DB_PATH="/data" +
			Environment.getDataDirectory().getAbsolutePath()+"/" +
			PACKAGE_NAME+"/databases";
	
	private Context context;
	
	public DBOpenHelper(Context context) {
		// TODO Auto-generated constructor stub
		this.context=context;
	}
	//数据库
	public SQLiteDatabase openDatabase(){
		try{
			File myDataPath=new File(DB_PATH);
		if(!myDataPath.exists()){
			myDataPath.mkdirs();//如果没有这个目录则创建
		}
			String dbfile=myDataPath+"/"+DB_NAME;
		if(!(new File(dbfile).exists())){
			InputStream is = context.getResources().openRawResource(R.raw.idioms);
			FileOutputStream fos = new FileOutputStream(dbfile);
			byte[] buffer=new byte[BUFFER_SIZE];
			int count=0;
			while((count=is.read(buffer))>0){
				fos.write(buffer,0,count);
			}
			fos.close();
			is.close();
		}
			SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(dbfile, null);
			return db;
		}catch(FileNotFoundException e){
			Log.e("Database", "File not found");
			e.printStackTrace();
		}catch (IOException e) {
			// TODO: handle exception
			Log.e("Datebase", "IO exception");
			e.printStackTrace();
		}
		return null;
	}
编写测试程序:

package com.example.happyidiom.test;

/*数据库测试类*/

import com.example.happyidiom.db.DBOpenHelper;

import android.test.AndroidTestCase;

public class DBOpenHelperTest extends AndroidTestCase {
	
	public void testDBOpen(){
		DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());
		dbOpenHelper.openDatabase();
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值