android greenDao SQLite数据库操作工具类使用

上一篇介绍了如何建立类生成工程,现在介绍如何使用。

以下是ExampleDaoGenerator工程代码,做了一些修改

/*
 * Copyright (C) 2011 Markus Junginger, greenrobot (http://greenrobot.de)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.greenrobot.daogenerator.gentest;

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

/**
 * Generates entities and DAOs for the example project DaoExample.
 *
 * Run it as a Java application (not Android).
 *
 * @author Markus
 */

public class ExampleDaoGenerator {

    public static void main(String[] args) throws Exception {
    	//该方法第一个参数用来更新数据库版本号,第二个参数为要生成的DAO类所在包路径。
        Schema schema = new Schema(1, "de.greenrobot.daoexample");

        //然后进行建表
        addNote(schema);
        //addCustomerOrder(schema);

        //设置要生成DAO文件的目标工程的项目路径,其中src-gen这个目录名需要在运行前手动创建,否则会报错
        new DaoGenerator().generateAll(schema, "../../HelloWorld/src-gen");
    }

    private static void addNote(Schema schema) {
    	/**
    	 *   在使用greenDAO时,一个实体类只能对应一个表,目前没法做到一个表对应多个实体类,或者多个表共用一种对象类型。
    	 *   后续的升级也不会针对这一点进行扩展。
    	 * */
        Entity note = schema.addEntity("Note");//创建表
        //note.addIdProperty();		//增加ID列
        note.addIdProperty().primaryKey().autoincrement();//设置一个自增长ID列为主键:
        note.addStringProperty("text").notNull();//创建非空的列
        note.addStringProperty("comment").unique();//创建唯一的
        //note.addDateProperty("date");
    }

    private static void addCustomerOrder(Schema schema) {
        Entity customer = schema.addEntity("Customer");
        customer.addIdProperty();
        customer.addStringProperty("name").notNull();

        Entity order = schema.addEntity("Order");
        order.setTableName("ORDERS"); // "ORDER" is a reserved keyword
        order.addIdProperty();
        Property orderDate = order.addDateProperty("date").getProperty();
        Property customerId = order.addLongProperty("customerId").notNull().getProperty();
        order.addToOne(customer, customerId);

        ToMany customerToOrders = customer.addToMany(order, customerId);
        customerToOrders.setName("orders");
        customerToOrders.orderAsc(orderDate);
    }

}

上面代码主要有两个

Schema schema = new Schema(1, "de.greenrobot.daoexample");

第一个参数为版本号,第二个参数为产生的类放在引用工程的那个地方,需要结合下面代码

new DaoGenerator().generateAll(schema, "../../HelloWorld/src-gen");

那么产生的文件将放到

ExampleDaoGenerator工程目录的上上两级目录下的  HelloWorld/src-gen/de/greenrobot/daoexample 目录下。

1、我们在ExampleDaoGenerator工程下,按下键盘的 ctrl+F11 则会自动生成四个java类放到HelloWorld/src-gen/de/greenrobot/daoexample目录下面

2、把这4个类依赖的相关类放到一起,依赖的类直接把 "greenDAO-master\DaoCore\src\de"目录下的内容放到一起4个类一起。

3、将src-gen目录设置为编译文件夹

4、根据生成类增加相关代码,这里只贴相关用到的代码

    private DaoMaster daoMaster;
    private DaoSession daoSession;
    private NoteDao noteDao;

    private Cursor cursor;
    private SQLiteDatabase db;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

	   DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this, "Note", null);
        db = helper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
        noteDao = daoSession.getNoteDao();
}
		final Button btn6 = (Button) findViewById(R.id.button6);
		btn6.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {

        Toast.makeText(MainActivity.this, "长度 :" + noteDao.count(),
				Toast.LENGTH_SHORT).show();
        Note note = new Note(null, "noteText1", "comment1");
		try {
		    noteDao.insert(note);

		} catch (Exception e) {
	        Toast.makeText(MainActivity.this, "数据重复 :" + noteDao.count(),
					Toast.LENGTH_SHORT).show();
		}
    

5、按ctrl+shift+o自动补齐相关类

6、下载APK到手机,即可。

补充:

在调试过程中,修改了生成工程的类之后发现,重新编译helloworld工程有出现代码异常的情况 代码位于"db = helper.getWritableDatabase();"

该问题暂时未知道什么原因。但有方法解决:在手机端-->在设置界面-->选择对应的应用(对于我来说,是helloworld这个应用)-->清除数据

android greenDao SQLite数据库操作工具类使用

时间: 2024-08-11 21:38:31

android greenDao SQLite数据库操作工具类使用的相关文章

android中SQLite数据库的增删改查

1.数据库帮助类PersonSQLiteOpenHelper package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper

Android实现SQLite数据库的增、删、改、查的操作

核心代码DAO类 package com.examp.use_SQLite.dao; 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; import

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

android操作sqlite数据库及心得

写这篇文章主要是网上的对sqlite的操作太多且太杂,很多时候都不能很好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来,一开始用的是preferences,后来要保存的东西多了,发现用preferences明显不能满足要求了,而且发现用这个的话代码就变得有点乱了,所以才开始学习使用sqlite数据库,一开始以为不就是个数据库么,和平时的mysql啊或者是sqlserver都一样,都很简单的,但后来真正在用的时候才发现困难

android中sqlite数据库的基本使用和添加多张表

看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大家如何在sqlite数据库中建立多张表. 首先是如何建立数据库和表: 建立一个类继承SQLiteOpenHelper,即: public class ReaderOpenHelper extends SQLiteOpenHelper 然后添加构造方法: public ReaderOpenHelper

android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        四.配置Application        五.使用    GitHub 前言 我的上一篇博客讲的是简单的 android SQLite 数据库的基本操作如增删改查,有兴趣的朋友可以点一下这里android 简单SQLite数据库 增删改查 但是呢,一般的项目里,一个数据库也不会只有一个数据表,

android在sqlite数据库的SQLiteOpenHelper中的onUpgrade里判断表是否存在

private boolean tabbleIsExist(String tableName, SQLiteDatabase db) { LogUtils.d("DatabaseHelper", "checking tabbleIsExist " + tableName); boolean result = false; if (tableName == null) { return false; } Cursor cursor = null; try { Stri

Qt for Android 打包 SQLite 数据库

Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面了, QT在打包apk的时候会自动打包这个目录里面的东西进去的  本文用菊子曰发布

【转】Android使用SQLite数据库版本升级

Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade. 1.v1.0(直接安装v1.0) 二.软件v2.0 有2种安装软件情况: 1.v1.0   -->  v2.0              不走onCreate,走onUpgrade 2.v2.0(直接安装v2.0)          走onCrea