eclipse下greendao使用

本文由其他文章运行后编译,保存留待以后使用,demo下载地址http://download.csdn.net/detail/qq_24179679/9666596

第一步,导入两个依赖库daocore、DaoGenerator;DaoGenerator如果不能导入,请新建Java项目,复制src-template、src以及libs,并引用src-template和src

第二步,引用库:用我们的安卓项目,引用daocore库,并构建好src下面的包结构,下一步会使用;

项目右键---properties,


第三步,自动生成工具类:新建Java项目,引用DaoGenerator库

项目右键---properties,

然后在项目中新建一个类,输入下列代码,并运行

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

public class DomeDaoGenerator {
	public static void main(String[] args) throws Exception {

		// 设置实体类包名   目标项目中,会自动生成
		Schema schema = new Schema(1, "com.example.usedaoforgen.bean");

		// 设置DAO层包名   目标项目中,自动生成
		schema.setDefaultJavaPackageDao("com.example.usedaoforgen.dao");

		// 定义实体类
		addNote(schema);

		// 生成的工具类的存放路径,这里放到了 UseDaoForGen 项目下的src 目录下
		new DaoGenerator().generateAll(schema, "../UseDaoForGen/src");

	}

	private static void addNote(Schema schema) {

		// 实体类名

		Entity person = schema.addEntity("Channel");

		// 添加id

		person.addIdProperty();

		person.addStringProperty("ID").notNull();
		
		person.addStringProperty("name").notNull();

		person.addStringProperty("url");

		person.addStringProperty("source");

	}
}
运行完成后,刷新我们的安卓项目,查看上面代码中对应的目录下,自动生成实体类和数据库操作工具类;

第四步,使用数据库操作类:

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

import com.example.usedaoforgen.adapter.listAdapter;
import com.example.usedaoforgen.bean.Channel;
import com.example.usedaoforgen.dao.ChannelDao;
import com.example.usedaoforgen.dao.ChannelDao.Properties;
import com.example.usedaoforgen.dao.DaoMaster;
import com.example.usedaoforgen.dao.DaoMaster.DevOpenHelper;
import com.example.usedaoforgen.dao.DaoSession;

import de.greenrobot.dao.query.QueryBuilder;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends Activity {

	private ListView list;
	private ArrayList
   
   
    
     channels = new ArrayList
    
    
     
     ();
	listAdapter adapter;
	private Button add, delete, update, query;
	private SQLiteDatabase db;
	private DaoMaster master;
	private DaoSession session;
	private ChannelDao channelDao;
	private static final String path = Environment
			.getExternalStorageDirectory().getAbsolutePath()
			+ "/DBpath/genDb.db";
	private int count = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		list = (ListView) findViewById(R.id.list);
		adapter = new listAdapter(channels, MainActivity.this);
		list.setAdapter(adapter);
		add = (Button) findViewById(R.id.add);
		delete = (Button) findViewById(R.id.delete);
		update = (Button) findViewById(R.id.update);
		query = (Button) findViewById(R.id.query);
		DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this,
				path, null);
		db = helper.getWritableDatabase();
		master = new DaoMaster(db);
		session = master.newSession();
		channelDao = session.getChannelDao();
		add.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				count++;
				String time = getTime();
				Channel channel = new Channel();
				channel.setID(time);
				channel.setName(time + ".name." + count);
				channel.setUrl(time + ".url." + count);
				channel.setSource(time + ".source." + count);
				add(channel);
				channels.clear();
				List
     
     
      
       chans = queryAll();
				for (int i = 0; i < chans.size(); i++) {
					channels.add(chans.get(i));
				}
				if (chans != null && !chans.isEmpty()) {
					count = chans.size();
				}
				adapter.notifyDataSetChanged();
			}
		});
		delete.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				if (channels.size() >= 1) {
					count--;
					delete(channels.get(channels.size() - 1));
					channels.remove(channels.size() - 1);
					adapter.notifyDataSetChanged();
				}
			}
		});
		update.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				if (channels.size() >= 1) {
					Channel kkk = channels.get(channels.size() - 1);
					kkk.setName("update." + count);
					update(kkk);
					channels.clear();
					List
      
      
       
        chans = queryAll();
					for (int i = 0; i < chans.size(); i++) {
						channels.add(chans.get(i));
					}
					if (chans != null && !chans.isEmpty()) {
						count = chans.size();
					}
					adapter.notifyDataSetChanged();
				}
			}
		});
		query.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				List
       
       
         chans = queryAll(); channels.clear(); for (int i = 0; i < chans.size(); i++) { channels.add(chans.get(i)); System.out.println("name = " + chans.get(i).getName()); } if (chans != null && !chans.isEmpty()) { count = chans.size(); } adapter.notifyDataSetChanged(); } }); } public String getTime() { String time = Long.toString(new Date().getTime()); String result = time.substring(time.length() - 4, time.length()); return result; } /** * 增 */ public void add(Channel channel) { channelDao.insert(channel); } /** * 删 */ public void delete(Channel channel) { channelDao.delete(channel); } /** * 改 */ public void update(Channel channel) { channelDao.update(channel); } /** * 查 */ public ArrayList 
        
          query(String colum, String value) { ArrayList 
         
           result = new ArrayList 
          
            (); QueryBuilder 
           
             qb = channelDao.queryBuilder(); if (colum.equals("ID")) { qb.where(Properties.ID.eq(value), Properties.ID.eq(value)); } else if (colum.equals("name")) { qb.where(Properties.Name.eq(value), Properties.Name.eq(value)); } else if (colum.equals("url")) { qb.where(Properties.Url.eq(value), Properties.Url.eq(value)); } else if (colum.equals("source")) { qb.where(Properties.Source.eq(value), Properties.Source.eq(value)); } List 
            
              chans = qb.list(); if (chans != null && !chans.isEmpty()) { for (int i = 0; i < chans.size(); i++) { result.add(chans.get(i)); } return result; } else { return null; } } public List 
             
               queryAll() { return channelDao.loadAll(); } } 
              
             
            
           
          
         
       
      
      
     
     
    
    
   
   

布局文件请下载demo查看

附:由于本项目db文件是放在SD卡中,需要使用权限,如下

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>


demo地址:http://download.csdn.net/detail/qq_24179679/9666596



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值