乐学成语
来源:互联网 发布: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
- 乐学成语
- 乐学成语
- 乐学成语
- 乐学成语2
- 乐学成语
- 乐学成语
- 乐学成语案例
- Android---乐学成语
- 乐学成语
- 乐学成语
- 乐学成语2
- 17乐学成语
- 18乐学成语
- 19乐学成语
- 乐学成语作业
- 乐学成语
- 乐学成语
- 乐学成语
- [Android] 布局文件中控件属性值为 @null
- android 中的UI
- redis配置文件redis.conf详细说明
- Android 多线程间变量同步的问题
- docker学习笔记1
- 乐学成语
- java面试题
- java练习——利用方法递归对1~100求和
- 你不知道的全文检索---solr索引库的维护(一)
- fastDFS架构解析和安装测试教程
- 纯虚函数与抽象类
- Android产品研发(八)-->App数据统计
- (转)矩阵——特征向量(Eigenvector)
- 布局的优化