数据库 查询 事务

数据库的查询

  1. SQLitedatabase中提供了query()方法用于对数据进行查询,
private void queryData() {

        /*
          第一个参数表名
        * 第二个参数指定 要查询哪些列,如果要在cursor里获取没有指定的列,将会报错。(null时表示查询所有列)
        * 第三四个参数用于约束查寻满足该条件的行(一行或多行)
        * 第五个参数指定要分组的列,不指定将不对结果分组
        * 第六个参数是对分组后的结果进一步的过滤
        * 第七个参数是对指定查询结果的排序方式
        * */

        //按person 的降序排列,默认为升序
//        Cursor cursor =
//                database.query("Country", new String[]{"person", " area"}, "person > ? and area > ?", new String[]{"100", "900"}, null, null, "person desc");

        /*
        * 查询Country的表,满足person > 100 并且area > 900的行,按continent分组, 对person列的和进行 > 1000,的筛选
        * */

        Cursor cursor =
                database.query("Country", new String[]{"sum(person)",
                        " sum(area)"}, "person > ? and area > ?", new String[]{"100", "900"}, "continent", "sum(person) > 1000", null);


        if (cursor.moveToFirst())
            do {

                String str2 = cursor.getString(cursor.getColumnIndex("person"));

                Log.d("MainActivity","str2   " + str2 );
            }
            while (cursor.moveToNext());
        cursor.close();

    }
## 事务 ##

 1. 事务可以保障某一系列的操作要么全都完成,要么全部都不会完成,(列如银行的汇款).
 2. **事务的标准用法,开启事务,设置事务执行成功,结束事物**
 3. 这里抛出一个异常,验证了要删除的列和要加的数据没有执行到

private void transactionData() {

    database.beginTransaction();//开启一个事物

    database.delete("Country", "name = ?", new String[]{"USA"});

    try {

        if (true) {

            throw new NullPointerException();
        }

        ContentValues values = new ContentValues();

        values.put("name", "日本");
        values.put("person", 200);

        database.setTransactionSuccessful();//事物已经执行完成

    } catch (Exception e) {


    } finally {

        database.endTransaction();//结束事物
    }

}

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值