本文记载在项目中数据库的使用-org.xutils
使用xUtils的第一步就是必须创建自己的Application类,代码如下:
private static DbManager.DaoConfig daoConfig;
初始化
x.Ext.init(this);
x.Ext.setDebug(true);
daoConfig = new DaoConfig()
// 数据库的名字
.setDbName("drawpanel")
// 保存到指定路径
// .setDbDir(new
// File(Environment.getExternalStorageDirectory().getAbsolutePath()))
// 数据库的版本号
.setDbVersion(1)
// 数据库版本更新监听
.setDbUpgradeListener(new DbUpgradeListener() {
@Override
public void onUpgrade(DbManager arg0, int arg1, int arg2) {
LogUtil.e("数据库版本更新了!");
}
});
有必要说明的一点是setDbDir(new File(“/sdcard”)),可以将数据库存储在你想存储的地方,如果不设置,那么数据库默认存储在/data/data/你的应用程序/database/xxx.db下。这里我们就默认放在应用程序下。
然后 建立一个实体类
@Table
(name=
"lyj_person"
)
public
class
LYJPerson {
@Column
(name =
"id"
, isId =
true
)
private
int
id;
@Column
(name =
"name"
)
private
String name;
@Column
(name =
"age"
)
private
String age;
public
String getAge() {
return
age;
}
public
void
setAge(String age) {
this
.age = age;
}
public
int
getId() {
return
id;
}
public
void
setId(
int
id) {
this
.id = id;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
}
通过实体类可以直接操作数据库。
我们在Application中加入如下代码,向数据库添加数据:
DbManager db = x.getDb(daoConfig);
LYJPerson person1=
new
LYJPerson();
person1.setName(
"liyuanjinglyj"
);
person1.setAge(
"23"
);
LYJPerson person2=
new
LYJPerson();
person2.setName(
"xutilsdemo"
);
person2.setAge(
"56"
);
try
{
db.save(person1);
db.save(person2);
}
catch
(DbException e) {
e.printStackTrace();
}
在Android APP中,为优化用户体验会有大量的地方使用本地数据,一般都会封装一个数据结构的类,例如
public class ClassBeanDao {
private static DbManager manager;
public ClassBeanDao() {
manager = x.getDb(MyApplication.getDaoConfig());
}
/**
*
* 保存数据
*
* @return
*/
public void saveClassBean(ClassBean cb) {
try {
ClassBean classbean = getClassBean(cb.classId);
if (classbean == null) {
Log.e(Utility.LOG_TAG, "保存班级数据");
manager.saveBindingId(cb);
} else {
cb.id = classbean.id;
updateClassBean(cb);
}
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "保存班级数据失败");
e.printStackTrace();
}
}
public ClassBean getClassBean(String classId) {
ClassBean cb = null;
try {
cb = manager.selector(ClassBean.class).where("classId", "=", classId).findFirst();
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "查询班级失败");
e.printStackTrace();
}
Log.e(Utility.LOG_TAG, "查询班级" + "sb" + cb);
return cb;
}
public ClassBean getClassBeanIsSelect() {
ClassBean cb = null;
try {
cb = manager.selector(ClassBean.class).where("isSelect", "=", 2).findFirst();
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "查询班级失败");
e.printStackTrace();
}
Log.e(Utility.LOG_TAG, "查询班级" + "sb" + cb);
return cb;
}
public List<ClassBean> getClassBeans() {
List<ClassBean> cbs = new ArrayList<ClassBean>();
try {
cbs = manager.selector(ClassBean.class).orderBy("orderTime").findAll();
} catch (Exception e) {
e.printStackTrace();
Log.e(Utility.LOG_TAG, "查询班级失败。。。。。。。。。。。。。。。");
}
Log.e(Utility.LOG_TAG, "查询班级数量。。。。。。。。。。。。。。。");
return cbs;
}
public List<ClassBean> getClassBeanFirstPage() {
List<ClassBean> cbs = new ArrayList<ClassBean>();
try {
cbs = manager.selector(ClassBean.class).where("page", "=", 1).orderBy("orderTime").findAll();
} catch (Exception e) {
e.printStackTrace();
Log.e(Utility.LOG_TAG, "查询班级失败。。。。。。。。。。。。。。。");
return cbs;
}
Log.e(Utility.LOG_TAG, "查询班级数量。。。。。。。。。。。。。。。");
return cbs;
}
public void updateClassBean(ClassBean cb) {
try {
Log.e(Utility.LOG_TAG, "班级更新状态任务状态.............");
manager.update(cb, "classId", "className", "masterTeaName", "UnSubmit", "unPublish", "page", "orderTime");
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "更新失败");
e.printStackTrace();
}
}
public void updateClassBeanSelect(ClassBean cb) {
try {
Log.e(Utility.LOG_TAG, "班级更新状态任务状态.............");
manager.update(cb, "isSelect");
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "更新失败");
e.printStackTrace();
}
}
public void deleteClassBean(ClassBean cb) {
try {
manager.delete(cb);
Log.e(Utility.LOG_TAG, "班级表删除.............");
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "删除失败");
e.printStackTrace();
}
}
public void deleteClassBeanById(String classId) {
try {
manager.execNonQuery("delete from ClassBean where classId=" + classId);
Log.e(Utility.LOG_TAG, "data删除未提交任务.............");
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "删除失败");
e.printStackTrace();
}
}
public void deleteClassBeanTable() {
try {
manager.dropTable(ClassBean.class);
Log.e(Utility.LOG_TAG, "表已删除.............");
} catch (Exception e) {
Log.e(Utility.LOG_TAG, "删除失败");
e.printStackTrace();
}
}
// 删除全部数据
public void deleteALL() {
List<ClassBean> cbs = null;
try {
cbs = manager.selector(ClassBean.class).findAll();
for (int i = 0; i < cbs.size(); i++) {
deleteClassBean(cbs.get(i));
}
} catch (Exception e) {
e.printStackTrace();
Log.e(Utility.LOG_TAG, "删除classbean表数据失败。。。。。。。。。。。。。。。");
}
}
}
在项目中使用,因需求而定
引用包使用的是xutils-3.3.20.jar。