Android开发基础之SQLite数据库 单元测试的使用
来源:互联网 发布:软件验收测试报告模板 编辑:程序博客网 时间:2024/05/18 09:28
1、安卓自带数据库,SQLite数据库,这个数据库操作简单,占用内存小,是Android系统已经携带的数据库。
2、安卓数据库的使用步骤:
1、首先需要新建一个类继承SQLiteOpenHelper(数据库打开帮助器),这个接口有2个抽象函数必须实现,分别是数据库创建时调用和数据库升级时调用。
然后本身必须要重写一个构造函数。这个构造函数传入的几个参数非常重要。
public class MyOpenHelper extends SQLiteOpenHelper {
//这里必须要有一个构造函数,因为这几个参数非常重要。
//name是数据库的名字,cursor是游标,会在返回数据时创建对象,verson版本
public MyOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
//这里是数据库创建时调用,不是创建数据库,在这里可以初始化一些表
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("数据库创建了");
//这里主键用下划线id,自增长
db.execSQL("create table person(_id integer primary key autoincrement,name char(10),phone char(20),salary integer(20))");
}
//这里是数据库升级时调用,只要构造函数里verson变大了就调用,比如可以添加一张表
public void onUpgrade(SQLiteDatabase db, int oldverson, int newverson) {
// TODO Auto-generated method stub
System.out.println("数据库升级了");
}
}
2、在打开帮助器类新建完成后可以开始创建数据库了,包括数据库的几种基本功能。
public class Test extends AndroidTestCase {
private MyOpenHelper oh;
private SQLiteDatabase db;
public void test() {
//获取一个打开帮助器的对象,其中用getContext来获取虚拟上下文。
MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 1);
//调用oh里的方法获取数据库对象。
SQLiteDatabase db = oh.getReadableDatabase();//其中这里readable和writebale没有什么区别,只有当硬盘满的时候才有区别
}
@Override
protected void setUp() throws Exception {//这里是单元测试的内容,为什么要这样做了?首先为了代码好看,我们把获取oh和db对象的2个变量提升到全局变量
// TODO Auto-generated method stub //然后当我们对某个函数进行测试的时候便不可以获取到相应的值,这是setup函数就是会在测试用例前来执行。
super.setUp();
oh = new MyOpenHelper(getContext(), "people.db", null, 1);
db = oh.getWritableDatabase();
}
@Override
protected void tearDown() throws Exception {//同理这是测试函数结束后调用
// TODO Auto-generated method stub
super.tearDown();
db.close();
}
public void insert(){
//oh = new MyOpenHelper(getContext(), "people.db", null, 1);
//db = oh.getWritableDatabase();
//往表里添加数据,先用占位符代替,然后new object数组来填充
db.execSQL("insert into person(name ,phone ,salary) values (? ,? ,?)",new Object[]{"张三","121213",10000});
db.execSQL("insert into person(name ,phone ,salary) values (? ,? ,?)",new Object[]{"张三2","121213",100001});
db.execSQL("insert into person(name ,phone ,salary) values (? ,? ,?)",new Object[]{"张三3","121213",100002});
db.execSQL("insert into person(name ,phone ,salary) values (? ,? ,?)",new Object[]{"张三4","121213",100003});
db.execSQL("insert into person(name ,phone ,salary) values (? ,? ,?)",new Object[]{"张三5","121213",100004});
//db.close();
}
public void delete(){
//oh = new MyOpenHelper(getContext(), "people.db", null, 1);
//db = oh.getWritableDatabase();
db.execSQL("delete from person where name = ?", new Object[]{"张三"});
//db.close();
}
public void update(){
db.execSQL("update person set salary = ? where name = ?", new Object[]{"13909","张三2"});
}
public void select(){
Cursor cursor = db.rawQuery("select name, salary from person", null);
while(cursor.moveToNext())
{
//这里先通过获取列索引来获取列的ID,因为getstring只能传入int
String name = cursor.getString(cursor.getColumnIndex("name"));
String salary = cursor.getString(cursor.getColumnIndex("salary"));
System.out.println("name:"+name+"salary"+salary);
}
}
public void insertApi(){
ContentValues values = new ContentValues();
values.put("name", "李四");
values.put("phone", "123133");
values.put("salary", 23232);
db.insert("person", null, values);
}
public void deleteApi(){
db.delete("person", "_id = ?", new String[]{"3"});
}
public void updateApi(){
ContentValues values = new ContentValues();
values.put("salary", 121212);
db.update("person", values, "name = ?", new String[]{"张三3"});
}
public void selectApi(){
Cursor cursor = db.query("person", new String[]{"name","salary"}, null, null, null, null, null, null);
while(cursor.moveToNext())
{
//这里先通过获取列索引来获取列的ID,因为getstring只能传入int
String name = cursor.getString(cursor.getColumnIndex("name"));
String salary = cursor.getString(cursor.getColumnIndex("salary"));
System.out.println("name:"+name+"salary"+salary);
}
}
}
3、关于单元测试的用法:
首先需要创建一个类继承AndroidTestCase,然后在清单文件里加入以下
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.sqlite"
></instrumentation>
其中name是固定的,sqlite是需要测试的包的包名。
然后在app里加入以下
<uses-library android:name="android.test.runner"/>
这样便可可以用于测试。
- Android开发基础之SQLite数据库 单元测试的使用
- Android 开发之SQLITE 数据库的使用
- android 开发之路-------SQLite 基础使用
- android开发之使用SQLite数据库存储
- android开发之使用SQLite数据库存储
- Android开发之sqlite数据库的应用
- Android 开发中 SQLite 数据库的使用
- android开发中的数据库SQLite的使用
- Android开发案例之单元测试的使用
- Android基础之Sqlite数据库
- Android基础之SQLite的使用
- Android之SQLite数据库的使用
- Android之SQLite数据库的使用
- Android之sqlite数据库的简单使用
- Android之SQLite数据库的使用(1)
- Android之Sqlite数据库的使用
- Android之SQLite数据库的使用
- android之SQLite数据库的使用
- ActionBar小解析
- 中国剩余定理模板(JZOJ 3093. 【NOIP2012模拟11.7】合唱队形)
- linux内核启动流程
- 20160811_ZF_MUL8
- 解决《 Linux3.6.7在OK6410平台的移植》文章的错误问题
- Android开发基础之SQLite数据库 单元测试的使用
- JVM的内存区域划分
- ubuntu环境下Jenkins+git配置java maven项目集成环境
- HDU-5821 多校训练第8场-1001(巧妙模拟)
- C语言有符号数与无符号数之间的转换
- Flume日志收集分层架构应用实践
- 数据结构实验之栈三:后缀式求值
- 【Gao Jue Yi 2016.07.21初中部 NOIP普及组 】模拟赛总结
- Java bean 到底是什么?