android笔记2

import java.util.ArrayList;
import java.util.List;

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();    // 获取数据库连接(可写的)
        db.execSQL("INSERT INTO person(name, balance) VALUES(?, ?)", new Object[] { p.getName(), p.getBalance() });        // 执行SQL语句, 插入
        db.close();
    }
    
    public void delete(int id) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("DELETE FROM person WHERE id=?", new Object[] { id });
        db.close();
    }

    public void update(Person p) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("UPDATE person SET name=?, balance=? WHERE id=?", new Object[] { p.getName(), p.getBalance(), p.getId() });
        db.close();
    }
    
    public Person query(int id) {
        SQLiteDatabase db = helper.getReadableDatabase();            // 获取数据库连接(可读的)
        Cursor c = db.rawQuery("SELECT name, balance FROM person WHERE id=?", new String[] { id + "" });    // 执行SQL语句, 查询, 得到游标
        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.rawQuery("SELECT id, name, balance FROM person", null);    
        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.rawQuery("SELECT COUNT(*) FROM person", 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.rawQuery("SELECT id, name, balance FROM person LIMIT ?,?", new String[]{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;
    }


你可能感兴趣的:(android笔记2)