文档章节

android(3)另一种增删改查

会飞的蝌蚪
 会飞的蝌蚪
发布于 2014/03/31 12:46
字数 559
阅读 99
收藏 2
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class PersonDao {
    private DBOpenHelper helper;
    
    public PersonDao(Context context) {
        helper = new DBOpenHelper(context);
    }

    public void insert(Person p) {
        SQLiteDatabase db = helper.getWritableDatabase();    // 获取数据库连接(可写的)
        ContentValues values = new ContentValues();            // 类似于Map的容器, 键是String, 用来存放列名, 值是Object, 用来存要插入的数据
        values.put("name", p.getName());                    // 某些情况下, 程序会接收一个ContentValues参数, 这时用这种方式存储比较方便
        values.put("balance", p.getBalance());
        long id = db.insert("person", null, values);        // 第二个参数随便写表中的一个列名即可, 用来在想插入一条除了主键全部为空的记录时使用
        System.out.println("插入的记录的id是: " + id);
        db.close();
    }
    
    public void delete(int id) {
        SQLiteDatabase db = helper.getWritableDatabase();
        int rows = db.delete("person", "id=?", new String[] { id + "" });
        System.out.println("删除了" + rows + "行");
        db.close();
    }

    public void update(Person p) {
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", p.getName());
        values.put("balance", p.getBalance());
        int rows = db.update("person", values, "id=?", new String[] { p.getId() + "" });
        System.out.println("更新了" + rows + "行");
        db.close();
    }
    
    public Person query(int id) {
        SQLiteDatabase db = helper.getReadableDatabase();            // 获取数据库连接(可读的)
        Cursor c = db.query("person", new String[] { "name", "balance" }, "id=?", new String[] { id + "" }, null, null, null);
        Person p = null;
        if (c.moveToNext()) {                                        // 判断游标是否包含下一条记录, 如果包含将游标向后移动一位
            String name = c.getString(c.getColumnIndex("name"));    // 获取"name"字段的索引, 然后根据索引获取数据
            int balance = c.getInt(1);                                // 获取1号索引上的数据
            p = new Person(id, name, balance);    
        }
        c.close();
        db.close();
        return p;
    }
    
    public List<Person> queryAll() {
        SQLiteDatabase db = helper.getReadableDatabase();                    
        Cursor c = db.query("person", null, null, null, null, null, "id DESC");
        List<Person> persons = new ArrayList<Person>();
        while (c.moveToNext()) {                                        
            Person p = new Person(c.getInt(0), c.getString(1), c.getInt(2));
            persons.add(p);
        }
        c.close();
        db.close();
        return persons;
    }
    
    public int queryCount() {
        SQLiteDatabase db = helper.getReadableDatabase();                    
        Cursor c = db.query("person", new String[]{ "COUNT(*)" }, null, null, null, null, null);    
        c.moveToNext();
        int count = c.getInt(0);
        c.close();
        db.close();
        return count;
    }
    
    public List<Person> queryPage(int pageNum, int capacity) {        
        String offset = (pageNum - 1) * capacity + "";        // 偏移量
        String len = capacity + "";                            // 个数
        SQLiteDatabase db = helper.getReadableDatabase();                    
        Cursor c = db.query("person", null, null, null, null, null, null, offset + "," + len);    
        List<Person> persons = new ArrayList<Person>();
        while (c.moveToNext()) {                                        
            Person p = new Person(c.getInt(0), c.getString(1), c.getInt(2));
            persons.add(p);
        }
        c.close();
        db.close();
        return persons;
    }
    
    public void remit(int from, int to, int amount) {
        SQLiteDatabase db = helper.getWritableDatabase();
        try {
            db.beginTransaction();            // 开始事务
            db.execSQL("UPDATE person SET balance=balance-? WHERE id=?", new Object[] { amount, from });
            db.execSQL("UPDATE person SET balance=balance+? WHERE id=?", new Object[] { amount, to });
            db.setTransactionSuccessful();    // 设置成功点, 在事务结束时, 成功点之前的操作会被提交
        } finally {
            db.endTransaction();            // 结束事务, 将成功点之前的操作提交
            db.close();
        }
    }
    
}


© 著作权归作者所有

会飞的蝌蚪
粉丝 13
博文 80
码字总数 28126
作品 0
昌平
后端工程师
私信 提问
ContentProvider和数据库的区别

大家好,今天我们来讲解ContentProvider和数据库的区别是他们之间的联系. 四大组件之一 1.ContentProvider是如何实现数据共享的? 1.在Android中,为了把自己程序的数据(一般是数据库)提供给其他...

天王盖地虎626
06/17
11
0
程序员:怎样释放你的Android手机存储空间

Android应用在运行之中会产生一些数据,比如图片的缓存,数据库文件,配置文件等等。我们开发时可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比...

极客人
2017/02/23
0
0
android通过webService连接oracle数据库实现增删改查

安卓小菜求android通过webService连接oracle数据库实现增删改查的案例,有源码的发一下,感激不尽~

十年打鱼
2013/07/03
2.4K
4
Android Content Provider 总结思维导图

根据Google Android Doc总结: 1.Content Prodiver的基本概念 2.增删改查 3.创建Content Provider 4.在Manifest.xml中定义 5.Content URI详解 原文出处:http://www.mcjiffy.cn/353.html...

鉴客
2011/10/21
1K
1
三分钟了解Activity工作流

一、 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请...

java1990
2015/08/05
6.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
12
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
22
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
16
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
25
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部