乐学成语——第一部分

来源:互联网 发布:php手机网页游戏源码 编辑:程序博客网 时间:2024/04/29 00:30

      1. 先做好基础工作把数据库导入到项目工程中,这是第一步。

   (1)我们知道android的数据库存放在/data/data/package name/目录下,所以我们需要做的是把已有的数据库传入到那个目录下。思路是用FileInputStream读取原数据库,再用FileOutputStream把读到的东西写入到那个目录。这样就可以方便的操作数据库了。在res目录下新建raw目录,将idioms.db数据库复制到此目录下,这是因为raw目录中的东西,android会原封不动的拷贝到程序中,而不会转换成二进制文件。在db包下创建一个DBOpenHelper类。代码实现的功能主要是使用输入输出流将idioms.db复制到手机中默认存放数据库的位置。

   在这块需要注意的是路径问题

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><strong>public static final String DB_PATH="/data"+Environment.getDataDirectory().getAbsolutePath()+"/"+PACKAGE_NAME+"/databases";//在手机里存放数据库的位置</strong></strong></span></span>

   在创建这个类时,这块出错了,我以为是字符串连接,但是搞错了。导致android无法原封不动的拷贝到程序中,实际上是在/data/data/package name/目录下,PACKAGE_NAME存放应用的包名,getDataDirectory得到数据库记录。

   究竟有没有复制成功还缺少一个环节,搭建单元测试环境,测试数据库有没有创建到指定的路径下面。

   (2)首先修改AndroidMainfest.xml文件搭建起单元测试的环境。插入这段代码,单元环境就搭建起来了。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><application        android:allowBackup="true"        android:icon="@drawable/logo"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <uses-library android:name="android.test.runner" /> </strong></span></span>

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><application></strong></span></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><instrumentation        android:name="android.test.InstrumentationTestRunner"        android:targetPackage="cn.edu.bztc.happyidiom" > </instrumentation></strong></span></span>

    (3)在test包下,新建DBOpenHelperTest继承AndroidTestCase。

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

    该类中只封装了一个方法,测试方法通常命名为test***()。该方法调用了DBOpenHelper类里面定义的openDatase()方法。运行出现这种情况即可

     看看数据库有没有复制成功,切换到DDMS。

    2.(1) 在entity包下新建一个Animal类。实体类的内容非常简单,基本就是生成数据库表对应字段的set和get方法。

     (2)在dao包下创建一个AnimalDao类。在此需要注意的是在animal调用set方法时把解释的一层落下了。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>animal.setExplain(cursor.getString(cursor.getColumnIndex("explain")));</strong></span></span>

AnimalDao是一个单例类,我们将他的构造方法私有化,并提供了一个getInstance()方法来获取AnimalDao的实例,保证全局范围内只会有一个AnimalDao实例,在AnimalDao中提供了一个方法getAllAnimals()该方法用来获取所有的动物类成语。

     (3)编写单元测试类AnimalDaoTest继承AndroidTestCase。运行出现这种情况即可







0 0
原创粉丝点击