乐学成语



1.新建项目,在res目录下新家按raw文件夹,将数据库idioms.db复制到该文件夹下(安卓不会修改数据库,会将其拷贝到数据库中,而不会将其转换成二进制文件。)

2.在src目录下新建包,以便于后边操作。即adapter包用于存放适配器,activity包用于存放页面活动相关代码,dao包用于存放数据操作相关的代码,db包用于数据库相关的代码,util包用于存放所有工具相关的代码,test包用于存放单元测试类,entity用于存放实体类。

3.db包下新建DBOpenHelper.java页面,用于将复制到raw文件夹下的数据库文件读取并保存到databases文件夹中。DBOpenHelper.java页面如下:

package cn.edu.bztc.happyidiom.db;

import java.io.File;


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

import cn.edu.bztc.happyidiom.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="cn.edu.bztc.happyidom";
	public static final String DB_PATH="/data"
			+Environment.getDataDirectory().getAbsolutePath()+"/"
			+PACKAGE_NAME+"/databases";
	private Context context;
	public DBOpenHelper(Context context){
		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("Database","file not found");
    		e.printStackTrace();
		}
    	return null;
    }
}
    
4.单元测试需要修改AndroidManifest.xml文件搭建起单元测试环境,测试数据库有没有创建到指定路径下。

</application>上方添加:

 <uses-library android:name="android.test.runner" />

</manifest>上方添加:

<instrumentation

        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="cn.edu.bztc.happyidiom" >
    </instrumentation>

5.搭建环境后进行测试,即test包下新建DBOpenHelperTest.java页面测试数据库处理是否成功。

DBOpenHelperTest.java页面如下:

package cn.edu.bztc.happyidiom.test;

import cn.edu.bztc.happyidiom.db.DBOpenHelper;


import android.content.Context;
import android.test.AndroidTestCase;

public class DBOpenHelperTest extends AndroidTestCase{
	public void testDBCopy(){
		DBOpenHelper dbOpenHelper=new DBOpenHelper(getContext());
		dbOpenHelper.openDatabase();
	}
}
6.数据库是否复制成功可切换到DDMS,成功则在data/data应用包下成功创建idioms.db数据库

7.继续编写页面,在entity包下新建一个Animal类

package cn.edu.bztc.happyidiom.entity;

public class Animal {
	private int id;
	private String name;
	private String pronounce;
	private String explain;
	private String antonym;
	private String homoionym;
	private String derivation;
	private String examples;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPronounce() {
		return pronounce;
	}

	public void setPronounce(String pronounce) {
		this.pronounce = pronounce;
	}

	public String getExplain() {
		return explain;
	}

	public void setExplain(String explain) {
		this.explain = explain;
	}

	public String getAntonym() {
		return antonym;
	}

	public void setAntonym(String antonym) {
		this.antonym = antonym;
	}

	public String getHomoionym() {
		return homoionym;
	}

	public void setHomoionym(String homoionym) {
		this.homoionym = homoionym;
	}

	public String getDerivation() {
		return derivation;
	}

	public void setDerivation(String derivation) {
		this.derivation = derivation;
	}

	public String getExamples() {
		return examples;
	}

	public void setExamples(String examples) {
		this.examples = examples;
	}

}

8.dao包下新建AnimalDao.java类,获取数据库中数据。

AnimalDao.java类如下:

package cn.edu.bztc.happyidiom.dao;

import java.util.ArrayList;

import java.util.List;

import cn.edu.bztc.happyidiom.db.DBOpenHelper;
import cn.edu.bztc.happyidiom.entity.Animal;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class AnimalDao {
private static AnimalDao animalDao;
private SQLiteDatabase db;
private AnimalDao(Context context){
	DBOpenHelper dbHelper=new DBOpenHelper(context);
	db=dbHelper.openDatabase();
	
}
public synchronized static AnimalDao getInstance(Context context){
	if(animalDao==null){
		animalDao=new AnimalDao(context);
		}
	return animalDao;
}

public List<Animal>getAllAnimals(){
	List<Animal>list=new ArrayList<Animal>();
	Cursor cursor=db.query("animal", null, null, null, null,null, null);
	if(cursor.moveToFirst()){
		do{
			Animal animal=new Animal();
			animal.setId(cursor.getInt(cursor.getColumnIndex("_id")));
			animal.setName(cursor.getString(cursor.getColumnIndex("name")));
			animal.setPronounce(cursor.getString(cursor.getColumnIndex("pronounce")));
			animal.setAntonym(cursor.getString(cursor.getColumnIndex("antonym")));
			animal.setHomoionym(cursor.getString(cursor.getColumnIndex("homoionym")));
			animal.setDerivation(cursor.getString(cursor.getColumnIndex("derivation")));
			animal.setExamples(cursor.getString(cursor.getColumnIndex("examples")));
			
			list.add(animal);
			}while(cursor.moveToNext());
		}

	return list;
	}
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值