XUtils数据库的操作
来源:互联网 发布:数据整合的方法 编辑:程序博客网 时间:2024/06/07 16:44
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.exception.DbException;
import org.w3c.dom.Text;
import java.util.List;
import qianfeng.day03_xutils_database.bean.User;
public class MainActivity extends AppCompatActivity {
private DbUtils dbUtils;
private LinearLayout mOperation;
private TextView mTextContent;
private String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mOperation = (LinearLayout) findViewById(R.id.operation);
mTextContent = (TextView) findViewById(R.id.content_tv);
//1、创建数据库
createDatabase();
//2、操作数据库
setAllClick();
}
private void setAllClick() {
mOperation.getChildAt(0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
insert();
}
});
mOperation.getChildAt(1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
query();
}
});
mOperation.getChildAt(2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
update();
}
});
mOperation.getChildAt(3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delete();
}
});
}
private int postion = 1;
/**
* 新增
*/
private void insert(){
User user = new User();
try {
user.setUsername("王思聪"+postion);
user.setPassword("000000");
user.setSex("未知");
user.setAge(String.valueOf(20 + postion));
dbUtils.save(user);
postion++;
} catch (DbException e) {
e.printStackTrace();
}
}
private int pages=0;
private static final int size = 10;
/**
* 查询
*/
private void query(){
try {
//查找所有的
List<User> all = dbUtils.findAll(User.class);
Log.i(TAG,"all:"+all.size());
Log.i(TAG,"last:"+all.get(all.size()-1).toString());
//默认查询第一条
User first = dbUtils.findFirst(User.class);
Log.i(TAG,"first:"+first.toString());
//条件查询 自定义查询状态
User user = dbUtils.findFirst(Selector.from(User.class).orderBy("id", true));
Log.i(TAG, "last user:" + user.toString());
List<User> users = dbUtils.findAll(Selector.from(User.class).where("id", ">", "15").orderBy("id", true).limit(size).offset(pages * size));
for (User u : users) {
Log.i(TAG, "users:" + u.toString());
}
pages++;
} catch (DbException e) {
e.printStackTrace();
}
} /**
* 更新
*/
private void update(){
try {
User first = dbUtils.findFirst(User.class);
first.setUsername("王某某某某");
first.setAge("50+++");
first.setSex("男篮篮");
dbUtils.saveOrUpdate(first);
// dbUtils.update(first,"sex");
// dbUtils.updateAll(); 更新一票数据
// dbUtils.saveOrUpdateAll(); 更新一票数据 如果不存在 新增
} catch (DbException e) {
e.printStackTrace();
}
} /**
* 删除
*/
private void delete(){
User user = new User();
try {
// dbUtils.delete(User.class, WhereBuilder); //删除 你需要的指定条件的条目
// dbUtils.delete(Object); //直接删除某一个 与 数据库 相同的对象
// dbUtils.deleteById(Class,Object); //删除某个表中的 指定ID的数据
// dbUtils.deleteAll(List); //删除 某一部分 的数据
dbUtils.deleteAll(User.class);
} catch (DbException e) {
e.printStackTrace();
}
}
private void createDatabase() {
//1
dbUtils = DbUtils.create(this);
/**
//2
DbUtils.create(this,"数据库名称");
//3
DbUtils.create(this,"存储位置","数据库名称");
//4
int 数据库版本 = 1;
DbUtils.DbUpgradeListener 数据库更新监听 = new DbUtils.DbUpgradeListener() {
@Override public void onUpgrade(DbUtils dbUtils, int i, int i1) {
}
};
DbUtils.create(this,"数据库名称",数据库版本,数据库更新监听);
//5
DbUtils.create(this, "数据库地址", "数据库名称", 数据库版本, 数据库更新监听);
DbUtils.DaoConfig config = new DbUtils.DaoConfig(this);
config.setDbDir(); //设置数据库存储路径
config.setDbName(); //设置数据库名称
config.setDbVersion(); //设置数据库版本
config.setDbUpgradeListener(); //设置更新监听
**/
}
}
需要的权限
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
创建数据库
DaoConfig config = new DaoConfig(context);
config.setDbName("xUtils-demo"); //db名
config.setDbVersion(1); //db版本
DbUtils db = DbUtils.create(config);//db还有其他的一些构造方法,比如含有更新表版本的监听器的
创建表
db.createTableIfNotExist(User.class); //创建一个表User
db.save(user);//在表中保存一个user对象。最初执行保存动作时,也会创建User表
删除表
db.dropTable(User.class);
开启事务
db.configAllowTransaction(true);
db相关Annotation
@Check check约束
@Column 列名
@Finder 一对多、多对一、多对多关系(见sample的Parent、Child中的使用)
@Foreign 外键
@Id 主键,当为int类型时,默认自增。 非自增时,需要设置id的值
@NoAutoIncrement 不自增
@NotNull 不为空
@Table 表名
@Transient 不写入数据库表结构
@Unique 唯一约束
一些常用方法
DbUtils db = DbUtils.create(this);User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性user.setEmail("wyouflf@qq.com");user.setName("wyouflf");db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值...// 查找Parent entity = db.findById(Parent.class, parent.getId());List<Parent> list = db.findAll(Parent.class);//通过类型查找Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));// IS NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));// IS NOT NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffsetList<Parent> list = db.findAll(Selector.from(Parent.class) .where("id" ,"<", 54) .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30)) .orderBy("id") .limit(pageSize) .offset(pageSize * pageIndex));// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));...List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询db.execNonQuery(sql) // 执行自定义sql...
- XUtils数据库的操作
- xUtils 的 数据库操作类
- Xutils 中 对数据库的操作 DButils
- Android网络框架xUtils的数据库操作
- 3分钟读懂Xutils数据库的操作:
- XUtils对数据库的简单操作
- xUtils之操作数据库
- Xutils 3.0+数据库操作
- binbinyang博客----关于xutils---db 数据库操作
- android Xutils 数据库操作源码分析
- xutils网络请求后操作数据库
- XUtils数据库的简单使用;
- 用 xutils操作数据库,添加数据时的 空指针问题
- xutils 数据库
- Xutils数据库
- xutils 数据库
- xUtils中关于数据库的升级办法
- <Android>本地数据库之--Xutils的使用
- 通过Grwoth hacking策略,挖掘产品核心红利
- python引入外部文件
- NOI2005 维修数列(splay)
- 第三方数据分析公司的发展方向
- 智能指针之boost::weak_ptr
- XUtils数据库的操作
- CornerStone使用教程(配置SVN,HTTP及svn简单使用)
- java时间格式问题
- Android&java优化---(2)---java内存
- 读取文件方法大全
- 【Android】仿QQ功能点击通知栏返回应用,非启动一个新Activity
- java计算1900到2015共有多少天?
- 视频地址解析
- tesseract--应用程序无法启动,因为应用程序的并行配置不正确--问题的解决