乐学成语
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页面如下:
</application>上方添加:
</manifest>上方添加:
<instrumentation
5.搭建环境后进行测试,即test包下新建DBOpenHelperTest.java页面测试数据库处理是否成功。
DBOpenHelperTest.java页面如下:
7.继续编写页面,在entity包下新建一个Animal类
8.dao包下新建AnimalDao.java类,获取数据库中数据。
AnimalDao.java类如下:
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; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件