在上一篇greenDAO的简单使用(一)中已经介绍了如何生成DAO文件,这里就来介绍下如何使用DAO文件,利用源码
生成相应的daocore.jar库,这里也是新建一个Android工程,把相应的文件拷贝过来
新建一个测试DAO的工程,导入前面生成的daocore.jar库和加入第一篇生成的DAO类文件
在测试程序中有数据库的增、删、改、查功能,界面如下:
布局文件就不分析了,看下代码实现类UserActivity.java
package com.dzt.user;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ListView;
import com.dzt.greendaodemo.R;
import com.dzt.user.dao.DaoMaster;
import com.dzt.user.dao.DaoMaster.DevOpenHelper;
import com.dzt.user.dao.DaoSession;
import com.dzt.user.dao.User;
import com.dzt.user.dao.UserDao;
import com.dzt.user.dao.UserDao.Properties;
import de.greenrobot.dao.query.Query;
public class UserActivity extends FragmentActivity implements OnClickListener {
private SQLiteDatabase db;
private EditText etUserId;
private EditText etName;
private EditText etLoginName;
private EditText etPwd;
private EditText etPhone;
private ListView lvUser;
private List<User> datas = new ArrayList<User>();
private UserAdapter adapter;
private DaoMaster daoMaster;
private DaoSession daoSession;
private UserDao userDao;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_user);
initWidgets();
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "user_db",
null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
userDao = daoSession.getUserDao();
queryUserAll();
}
private void initWidgets() {
findViewById(R.id.btn_add).setOnClickListener(this);
findViewById(R.id.btn_delete).setOnClickListener(this);
findViewById(R.id.btn_query).setOnClickListener(this);
findViewById(R.id.btn_modify).setOnClickListener(this);
findViewById(R.id.btn_query_all).setOnClickListener(this);
etUserId = (EditText) findViewById(R.id.et_id);
etName = (EditText) findViewById(R.id.et_name);
etLoginName = (EditText) findViewById(R.id.et_login_name);
etPwd = (EditText) findViewById(R.id.et_pwd);
etPhone = (EditText) findViewById(R.id.et_phone);
lvUser = (ListView) findViewById(R.id.lv_user);
adapter = new UserAdapter(getApplicationContext(), datas);
lvUser.setAdapter(adapter);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_add:
addUser();
clearEditText();
break;
case R.id.btn_delete:
String userId = etUserId.getText().toString().trim();
if (TextUtils.isEmpty(userId))
break;
deleteUser(Long.parseLong(userId));
clearEditText();
break;
case R.id.btn_query:
queryUser();
break;
case R.id.btn_modify:
modifyUser();
break;
case R.id.btn_query_all:
queryUserAll();
clearEditText();
break;
default:
break;
}
}
private void addUser() {
String name = etName.getText().toString();
String loginName = etLoginName.getText().toString();
String pwd = etPwd.getText().toString();
String phone = etPhone.getText().toString();
User user = new User(null, name, loginName, pwd, phone, new Date());
userDao.insert(user);
datas.add(user);
Log.d("DaoExample", "Inserted new note, ID: " + user.getId());
queryUserAll();
}
private void deleteUser(long id) {
userDao.deleteByKey(id);
queryUserAll();
}
private void queryUser() {
String id = etUserId.getText().toString().trim();
if (TextUtils.isEmpty(id))
return;
Query<User> query = userDao.queryBuilder().where(Properties.Id.eq(id))
.build();
List<User> list = query.list();
for (User user : list) {
etUserId.setText(user.getId() + "");
etName.setText(user.getName());
etLoginName.setText(user.getLogin_name());
etPwd.setText(user.getPwd());
etPhone.setText(user.getPhone());
}
}
private void modifyUser() {
String id = etUserId.getText().toString().trim();
if (TextUtils.isEmpty(id))
return;
String name = etName.getText().toString().trim();
String loginName = etLoginName.getText().toString().trim();
String pwd = etPwd.getText().toString().trim();
String phone = etPhone.getText().toString().trim();
User entity = new User();
entity.setId(Long.valueOf(id));
entity.setName(name);
entity.setLogin_name(loginName);
entity.setPwd(pwd);
entity.setPhone(phone);
entity.setDate(new Date());
userDao.update(entity);
queryUserAll();
clearEditText();
}
private void queryUserAll() {
List<User> users = userDao.queryBuilder().list();
datas.clear();
for (User user : users) {
Log.i("dzt", user.toString());
datas.add(user);
}
adapter.notifyDataSetChanged();
}
private void clearEditText() {
etUserId.setText("");
etName.setText("");
etLoginName.setText("");
etPwd.setText("");
etPhone.setText("");
}
}
这里就有生成的DAO文件使用
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "user_db",
null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
userDao = daoSession.getUserDao();
对数据的操作都是使用userDao