本文由其他文章运行后编译,保存留待以后使用,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