乐学成语——数据库操作

来源:互联网 发布:.tm商标域名 编辑:程序博客网 时间:2024/04/28 11:24

乐学英语——数据库操作

1.将idioms.db数据库传入/data/data/package name目录下。

   
<span style="font-size:18px;"><span style="font-size:18px;">package com.edu.happyidiom.db;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import com.example.happyidiom.R;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.os.Environment;import android.util.Log;/** *  * 实现将数据库文件从raw目录拷贝到手机里存放数据库的位置 * @author A_Yan * */public class DBOpenHelper {private final int BUFFER_SIZE=400000;//缓冲区大小public static final String DB_NAME="idioms.db"; //保存的数据库文件名public static final String PACKAGE_NAME="com.example.happyidiom";//应用的包名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){Log.e("Database","IO exception");e.printStackTrace();}return null;}}</span></span>

2.在AndriodManifest中搭建单元测试环境。

<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.happyidiom"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="15"        android:targetSdkVersion="17" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <span style="background-color: rgb(255, 0, 0);"><uses-library android:name="android.test.runner"/></span>        <activity            android:name="com.example.happyidiom.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>    <span style="background-color: rgb(255, 0, 0);"><instrumentation         android:name="android.test.InstrumentationTestRunner"        android:targetPackage="com.example.happyidiom"        ></instrumentation></span></manifest></span></span>

3.测试数据库有没有传入。(切换到DOM在/data/data/package name查看

<span style="font-size:18px;">package com.edu.happyidiom.test;import com.edu.happyidiom.db.DBOpenHelper;import android.test.AndroidTestCase;public class DBOpenHelperTest extends AndroidTestCase{public void testDBCopy(){DBOpenHelper dBOpenHelper=new DBOpenHelper(getContext());dBOpenHelper.openDatabase();}}</span>

4.创建实体类Animal,便于以后开发。

<span style="font-size:18px;">package com.edu.happyidiom.entity;public class Animal {private int id;private String name;private String pronounce;private String explain;private String autonym;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 getAutonym() {return autonym;}public void setAutonym(String autonym) {this.autonym = autonym;}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;}}</span>

5.创建AnimalDao类,对数据库进行封装。


<span style="font-size:18px;">package com.edu.happyidiom.dao;import java.util.ArrayList;import java.util.List;import com.edu.happyidiom.db.DBOpenHelper;import com.edu.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();}/** * 获取AnimalDao的实例 */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.setAutonym(cursor.getString(cursor.getColumnIndex("autonym")));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;}}</span>

6.编写AnimalDaoTest测试类

<span style="font-size:18px;">package com.edu.happyidiom.test;import java.util.List;import com.edu.happyidiom.dao.AnimalDao;import com.edu.happyidiom.entity.Animal;import android.test.AndroidTestCase;public class AnimalDaoTest extends AndroidTestCase{public void testGetAllAnimals(){AnimalDao animalDao=AnimalDao.getInstance(getContext());List<Animal> animals=animalDao.getAllAnimals();System.out.println(animals.size());for(Animal animal:animals){System.out.println(animal.getName());}}}</span>

  7.ENDING

            至此,第一阶段的编程就结束了,改天我们再说一下第二阶段的开发。


0 0
原创粉丝点击