NoteDAO.java

  • 添加和删除的时候需要使用值对象ContentValues

  • 删除、修改、按照ID查询的时候需要使用查询条件 ,?号为占位符

  • DAO层需要上下文,一般使用构造传参数方案获取


package com.hzj163.mysqlitedb.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.hzj163.mysqlitedb.beans.Note;
import java.util.ArrayList;
/**
 * 作者: 黄志江老师 on 2015/9/21.
 * 网址: www.hzj163.com
 * 网书: https://www.gitbook.com/@hzj163
 * 邮箱: [email protected]
 */
public class NoteDAO {

    //需要上下文
    Context context;
    //需要Db对象
    DB db;
    //使用构造传递上下文,和实例化Db对象
    //Db对象需要依赖上下文
    public NoteDAO(Context context) {
        //获取上下文
        this.context = context;
        //获取DB对象
        db = new DB(context);
    }
    //添加方法
    public void insert(Note note)
    {
        //获得SQLiteDatabase对象
        SQLiteDatabase sqLiteDatabase=  db.getWritableDatabase();
        //值对象ContentValues,用于添加和修改
        ContentValues contentValues=new ContentValues();
        contentValues.put("info",note.getInfo());
        contentValues.put("st",note.getSt());
        //添加方法insert
        sqLiteDatabase.insert("note",null,contentValues);
        //关闭
        sqLiteDatabase.close();
    }

    //删除方法
    public void del(int id)
    {
        SQLiteDatabase sqLiteDatabase=  db.getWritableDatabase();
        //第二个参数为查询的条件,id为字段名,?为占位符
        //第三个参数?占位符的值
        //返回值Wie影响行数
        int i=  sqLiteDatabase.delete("note","id=?",new String[]{String.valueOf(id)} );
        Log.i("hzj", "i:" + i);
        sqLiteDatabase.close();
    }
    //修改方法
    public void update(Note note)
    {
        SQLiteDatabase sqLiteDatabase=  db.getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        //这里只修改内容,不修改日期
        contentValues.put("info",note.getInfo());
        sqLiteDatabase.update("note",contentValues,"id=?",new String[]{String.valueOf(note.getId())});
        sqLiteDatabase.close();
    }
    //查询所有方法
    public ArrayList<Note> selectByAll() {
        ArrayList<Note> temp=new ArrayList();
        SQLiteDatabase sqLiteDatabase = db.getWritableDatabase();
        //使用SQLiteDatabase对象的query方法获取Cursor对象
        Cursor cursor = sqLiteDatabase.query(true, "note", new String[]{"id,info,st"}, null, null, null, null, "id desc", null);
        while (cursor.moveToNext()) {
            Note note = new Note();
            note.setId(cursor.getInt(0));
            note.setInfo(cursor.getString(1));
            note.setSt(cursor.getString(2));
            temp.add(note);
        }
        sqLiteDatabase.close();
        return  temp;
    }
    //按照ID查询方法
    public Note selectById(int id)
    {
        Note temp=new Note();
        SQLiteDatabase sqLiteDatabase = db.getWritableDatabase();
        Cursor cursor = sqLiteDatabase.query(true, "note", new String[]{"id,info,st"}, "id=?",new String[]{String.valueOf(id)}, null, null, "id desc", null);
        while (cursor.moveToNext()) {
            temp.setId(cursor.getInt(0));
            temp.setInfo(cursor.getString(1));
            temp.setSt(cursor.getString(2));
        }
        sqLiteDatabase.close();
        return  temp;
    }
}