乐学成语

来源:互联网 发布:linux route del 编辑:程序博客网 时间:2024/05/15 23:46



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
原创粉丝点击