使用 greenDao 框架 操作数据库

本文介绍如何利用GreenDAO生成工具快速搭建Android项目的数据库操作层,并通过具体示例展示了如何进行学生信息的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.效果图

步骤:

1.新建java项目,生成实体类等代码.需要的jar包:  freemarker-2.3.10.jar , greendao-generator-1.3.1.jar

import java.io.IOException;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

public class Test1 {
    public static void main(String[] args) throws IOException, Exception {
        //第一个参数用来更新数据库版本号,第二个参数为要生成的DAO类所在包路径
        Schema schema = new Schema(1, "de.bvb.db");
        //创建表
        addNote(schema);
        //设置生成的文件文件存放的位置 
        new DaoGenerator().generateAll(schema, "./src");
    }

    private static void addNote(Schema schema) {
        Entity note = schema.addEntity("Student");//表名
        note.addIdProperty();//自增字段
        note.addStringProperty("name").notNull();
        note.addIntProperty("age");
    }
}

2.android项目代码 (db包下面代码为java项目生成的)

2.1 MyApplication中对数据库进行初始化的代码

    private static DaoMaster daoMaster;
    private static DaoSession daoSession;

    //取得DaoMaster
    public static DaoMaster getDaoMaster(Context context) {
        if (daoMaster == null) {
            DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(instance, "dbName", null); //dbName 为数据库名
            daoMaster = new DaoMaster(helper.getWritableDatabase());
        }
        return daoMaster;
    }

    //取得DaoSession
    public static DaoSession getDaoSession() {
        if (daoSession == null) {
            if (daoMaster == null) {
                daoMaster = getDaoMaster(instance);
            }
            daoSession = daoMaster.newSession();
        }
        return daoSession;
    }

2.2DBHelper代码

package de.bvb.util;

import java.util.List;

import android.content.Context;
import de.bvb.MyApplication;
import de.bvb.db.DaoSession;
import de.bvb.db.Student;
import de.bvb.db.StudentDao;
import de.greenrobot.dao.query.QueryBuilder;

public class DBHelper {
    private static DBHelper instance;
    private StudentDao studentDao;

    private DBHelper() {
    }

    //单例
    public static DBHelper getInstance() {
        if (instance == null) {
            instance = new DBHelper();
            DaoSession daoSession = MyApplication.getDaoSession();
            instance.studentDao = daoSession.getStudentDao();
        }
        return instance;
    }

    public void add(Student student) {
        studentDao.insert(student);
    }

    public void update(Student student) {
        studentDao.update(student);
    }

    public void delete(Student student) {
        studentDao.delete(student);
    }

    public List<Student> query() {
        return studentDao.queryBuilder().list();
    }
}

3.调用的方法

 @Override
    public void onClick(View v) {
        Student student = new Student();

        switch (v.getId()) {
        case R.id.btnAdd:
            student.setName(etName.getText().toString().trim());
            student.setAge(Integer.parseInt(etAge.getText().toString().trim()));
            DBHelper.getInstance().add(student);
            break;

        case R.id.btnUpdate:
            student.setId(Long.parseLong(tvId.getText().toString().trim()));
            student.setName(etName.getText().toString().trim());
            student.setAge(Integer.parseInt(etAge.getText().toString().trim()));
            DBHelper.getInstance().update(student);

            break;
        case R.id.btnDelete:
            student.setId(Long.parseLong(tvId.getText().toString().trim()));
            student.setName(etName.getText().toString().trim());
            student.setAge(Integer.parseInt(etAge.getText().toString().trim()));
            DBHelper.getInstance().delete(student);

            break;
        case R.id.btnQuery:
            list = DBHelper.getInstance().query();
            adapter.setData(list);
            break;
        }
    }

4.完整代码(基于eclipse)

转载于:https://www.cnblogs.com/Westfalen/p/6131905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值