您的位置:首页 > 移动开发 > Android开发

乐学成语

2016-06-06 20:28 295 查看
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;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息