SQLite数据库
 轻量级关系型数据库
 创建数据库需要使用的api:SQLiteOpenHelper

public class Myopenhelper extends SQLiteOpenHelper {

    //new 时调用
public Myopenhelper(Context context, String name, CursorFactory factory,
int version) {
//name数据库文件名,游标工厂,数据库版本
super(context, name, factory, version); } //数据库创建时调用
@Override
public void onCreate(SQLiteDatabase db) {
//在创建数据库时创建表..这里可以增删改查,只要换里面的sql语句就可以了!!!
db.execSQL("create table person (_id integer primary key autoincrement, name char(10), phone char(20), money integer(20))"); }
//数据库升级时此方法调用
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { } }

创建数据库

public class Testcase extends AndroidTestCase {
public void test(){
//getContext():获取虚拟的上下文,这是测试框架特地方便测试
Myopenhelper oh = new Myopenhelper(getContext(), "people.db", null, 1);
//如果数据库不存在,现先创建数据库,再获取可读可写的数据库对象;若存在直接打开
SQLiteDatabase db = oh.getWritableDatabase();
//也是可读可写的数据库对象,除非存储空间满了,需要数据库以只读方式 打开。
//SQLiteDatabase db1 = oh.getReadableDatabase(); } }

结果如下:

 数据库的增删改查
SQL语句
* insert into person (name, phone, money) values ('张三', '159874611', 2000);
* delete from person where name = '李四' and _id = 4;
* update person set money = 6000 where name = '李四';
* select name, phone from person where name = '张三';

执行SQL语句实现增删改查

//插入
        db.execSQL("insert into person (name, phone, money) values (?, ?, ?);", new Object[]{"张三", 15987461, 75000});
        //查找
        Cursor cs = db.rawQuery("select _id, name, money from person where name = ?;", new String[]{"张三"});
测试方法执行前会调用此方法

protected void setUp() throws Exception {
            super.setUp();
            //                    获取虚拟上下文对象
            oh = new MyOpenHelper(getContext(), "people.db", null, 1);
        }
使用api实现增删改查
* 插入
        //以键值对的形式保存要存入数据库的数据
        ContentValues cv = new ContentValues();
        cv.put("name", "刘能");
        cv.put("phone", 1651646);
        cv.put("money", 3500);
        //返回值是改行的主键,如果出错返回-1
        long i = db.insert("person", null, cv);
* 删除

//返回值是删除的行数
        int i = db.delete("person", "_id = ? and name = ?", new String[]{"1", "张三"});
* 修改
    
        ContentValues cv = new ContentValues();
        cv.put("money", 25000);
        int i = db.update("person", cv, "name = ?", new String[]{"赵四"});
* 查询
        //arg1:要查询的字段
        //arg2:查询条件
        //arg3:填充查询条件的占位符
        Cursor cs = db.query("person", new String[]{"name", "money"}, "name = ?", new String[]{"张三"}, null, null, null);
        while(cs.moveToNext()){
            //                            获取指定列的索引值
            String name = cs.getString(cs.getColumnIndex("name"));
            String money = cs.getString(cs.getColumnIndex("money"));
            System.out.println(name + ";" + money);
        }

单元测试junit
定义一个类继承AndroidTestCase,在类中定义方法,即可测试该方法

在清单文件里加:
在指定指令集时,targetPackage指定你要测试的应用的包名
        <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.itheima.junit"    //这个按  alt+/ 自己选吧!
        ></instrumentation>
定义使用的类库
 <uses-library android:name="android.test.runner"></uses-library>

断言的作用,检测运行结果和预期是否一致
 如果应用出现异常,会抛给测试框架

Android开发学习——SQLite数据库与单元测试的更多相关文章

  1. Android 开发中 SQLite 数据库的使用

    SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...

  2. Android开发-之SQLite数据库

    之前我们讲了如何将数据存储在文件中,那么除了这种方式呢,就是我们常见的大家都知道的将数据存储在数据库当中了. 将数据存储在数据库中的优势: 1)存储在数据库中的数据更加方便操作,比如增.删.改.查等 ...

  3. Android开发--adb,SQLite数据库运用

    一.玩转adb  adb的全称为Android Debug Bridge,就是起到调试桥的作用.   adb有什么用?:借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作,如安 ...

  4. Android 开发笔记 “Sqlite数据库删除”

    1.代码方式 Context.deleteDatabase(String databaseName);//删除某一数据库 2.设置里面 进入应用程序 ,然后清除数据就ok了

  5. android开发学习 ------- MongoDB数据库简单理解

    首先说一下MongoDB是什么? MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB 是一个基于分布式文件存储的数据库. N ...

  6. 从零开始学android开发-查看sqlite数据库

    C:\Users\Administrator>cd E:\ProSoft\adt-bundle-windows-x86-20140321\sdk\platform-tools

  7. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  8. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  9. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

随机推荐

  1. OpenCascade MeshVS Usage

    OpenCascade MeshVS Usage eryar@163.com Abstract. MeshVS means Mesh Visualization Service. It can be ...

  2. floating IP 原理分析 - 每天5分钟玩转 OpenStack(107)

    上一节我们通过 Web UI 创建为 cirros-vm3 分配了浮动 IP,今天将分析其工作原理. 首先查看 router 的 interface 配置: 可以看到,floating IP 已经配置 ...

  3. 创建第一个 vlan network "vlan100" - 每天5分钟玩转 OpenStack(94)

    上一节我们在 ML2 配置中 enable 了 vlan network,今天将创建 vlan100 并讨论底层网络变化. 打开菜单 Admin -> Networks,点击 “Create N ...

  4. Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)

    前面我们讨论了 volume 的 attach 和 detach 操作,今天讨论如何扩大 volume 的容量.为了保护现有数据,cinder 不允许缩小 volume. Extend 操作用于扩大 ...

  5. jQuery之empty、remove、detach

    三者都有把元素移除的作用,但细微的差别,造就了它们的使命不同. 最权威的解释当然是jQuery_API咯,下面是API中关于他三儿的部分截取. 一.empty: This method removes ...

  6. 【记录】ASP.NET IIS ISAPI_Rewrite

    下载地址(Lite 免费版):Download ISAPI_Rewrite 3 配置(导入自定义 httpd.ini 文件): IIS ISAPI 筛选器(不需要重写的站点可以移除): 参考资料: 主 ...

  7. 【JUC】JDK1.8源码分析之ConcurrentLinkedQueue(五)

    一.前言 接着前面的分析,接下来分析ConcurrentLinkedQueue,ConcurerntLinkedQueue一个基于链接节点的无界线程安全队列.此队列按照 FIFO(先进先出)原则对元素 ...

  8. mybatis入门基础(五)----动态SQL

    一:动态SQL 1.1.定义 mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.2.案例需求 用户信息综合查询列表这个statement的定义使用动态s ...

  9. Vue.js先入个门看看

    使用vue.js原文介绍:Vue.js是一个构建数据驱动的web界面库.Vue.js的目标是通过尽可能简单的API实现响应式数据绑定和组合的视图组件.vue.js上手非常简单,先看看几个例子: 例一: ...

  10. 使用EDMX查询(EF基础系列15)

    EF支持三种类型的查询: 1.LINQ to Entities 2.Entity SQL 3.Native SQL 1.LINQ to Entities LINQ Method syntax: usi ...