Android入门第七讲04-数据库框架-xUtils(数据库映射(增删改查))

Android 入门第七讲03- SQLite数据库(SQLite数据库概述,使用方法(SQL语法复习,SQLite的增删改查),案例实战-增加查询学生数据)

1.xUtils框架使用方法

第一步,导入依赖

		implementation 'org.xutils:xutils:3.8.5'

在这里插入图片描述
第二步,MainActivity中添加代码

	x.Ext.init(getApplication());
	x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
	x.view().inject(this);//没有用到view注解可以先不用

在这里插入图片描述

第三步,在布局文件当中添加一个button
在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="增加数据"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

2.数据库映射

原生数据库:通过sql语法来对数据库进行操作
数据库框架-xUtils:通过对对象的操作 来对数据库进行操作

第一步,创建实体类对象 User

使用框架的好处是,我们不需要像之前一样去用sql语法创建表,而是通过在实体类中添加注解表示表名,然后通过实体类中的字段刚好对应上数据库表中的字段,可以通过ture来指定主键

在这里插入图片描述


@Table(name = "user")
public class User {
    @Column(name = "id", isId = true)
    private int id;
    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    @Column(name = "age")
    private int age;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                '}';
    }
}

在对数据库操作前,先创建DaoConfig 对象(作为成员变量)

    DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
            .setDbName("test.db")
            // 不设置dbDir时, 默认存储在app的私有目录.
	// .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了.
            .setDbVersion(2)
            .setDbOpenListener(new DbManager.DbOpenListener() {
                @Override
                public void onDbOpened(DbManager db) {
                    // 开启WAL, 对写入加速提升巨大
                    db.getDatabase().enableWriteAheadLogging();
                }
            })
            .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                @Override
                public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                    // TODO: ...
                    // db.addColumn(...);
                    // db.dropTable(...);
                    // ...
                    // or
                    // db.dropDb();
                }
            });

在这里插入图片描述

1.增加数据

原来增加数据还要用到sql语法,这里直接创建一个DbManager ,然后这个DbManager 可以调用save方法来增加数据,然后这个save里面传的是这个user对象

 DbManager db = null;
 try {
     db = x.getDb(daoConfig);
     User user = new User();
     user.setUsername("test"+System.currentTimeMillis());
     user.setPassword("passwd");
     user.setAge(30);
     db.save(user);
 } catch (DbException e) {
     e.printStackTrace();
     return;
 }

可以发现我们对数据库的操作实际上是对对象的操作,省去了很多sql的语法

在这里插入图片描述
在这里插入图片描述

查看

在这里插入图片描述

2.查看表格方式

Android中SQLite数据库查看推荐博客《Android Studio查看SQLite数据库方法大全
我们这里 采用SQLite Expert Professional工具来查看
在这里插入图片描述
第一步导出模拟器数据库文件
找到data目录下的—》data目录—》应用程序包名—》databases文件夹下的数据库文件
在这里插入图片描述
在这里插入图片描述

右键保存到本地
在这里插入图片描述

保存到指定位置
在这里插入图片描述

第二步:查看数据库文件
打开第一步保存的db文件
在这里插入图片描述
找到文件路径
在这里插入图片描述

查看
在这里插入图片描述

—修改数据库后查看表格方式

第一步,关闭已经打开的数据库
在这里插入图片描述
第二步,重新运行,并且执行修改操作–这里我们执行添加数据
在这里插入图片描述

第三步,重新导出db文件
在这里插入图片描述
第三步,打开db文件所对应数据库(可以看到我们已经成功添加数据)
在这里插入图片描述

3.删除数据

1.根据id 删除

在点击事件中添加

  DbManager db = null;
                try {
                    db = x.getDb(daoConfig);
                    User user = new User();
                    user.setId(2);
                    db.delete(user);
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述
删除后查看
点击文内跳转到—修改数据库后查看表格方式
在这里插入图片描述

2.根据条件删除

   DbManager db = null;
                try {
                    db = x.getDb(daoConfig);
                    db.delete(User.class,
                            WhereBuilder.b("age", "=",30));

                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

删除后查看
点击文内跳转到—修改数据库后查看表格方式
在这里插入图片描述

4.修改数据

1.根据id 删除

    try {
                    DbManager db = null;
                    db = x.getDb(daoConfig);
                    User user = new User();
                    user.setId(32);
                    user.setUsername("new user");
                    user.setPassword("new passwd");
                    user.setAge(30);
                    db.saveOrUpdate(user);
                    // db.update(user);或者用这个方法修改
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述
修改后查看
点击文内跳转到—修改数据库后查看表格方式
在这里插入图片描述

2.根据条件删除

                try {
                    DbManager db = null;
                    db = x.getDb(daoConfig);
                    db.update(User.class, WhereBuilder.b("age", "=", 30),
// WhereBuilder.b("id", "=", 1).and("isAdmin", "=", true).,
                            new KeyValue("username", "test_name"), new KeyValue("password", "new pss"));
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述
修改后查看
点击文内跳转到—修改数据库后查看表格方式
在这里插入图片描述

5.查询数据

1.根据条件查询数据

查询id=32的数据

  DbManager db = null;
                try {// 删除1
                    db = x.getDb(daoConfig);
                    List<User> users = new ArrayList<>();
                    users= db.selector(User.class).orderBy("id", true).limit(1000).where("id","=",32).findAll();
                    for (User user : users){
                        Log.i("testdb","test" + user);
                    }

                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

运行,点击查询
在这里插入图片描述

在这里插入图片描述

1.查询所有数据

最后我们梳理一下,查询所有数据的操作是,通过创建一个db对象,然后调用它的selector的方法,往里面传一个User.class,表示我们要去User.class这个表里面去查,然后查到的数据自动封装到一个User对象里面,由于我们这个有很多条数据,所以就封装到了一个List集合里面,findAll()就表示查询所有的数据,我们可以发现这个方法并不带有任何的sql语法

  DbManager db = null;
                try {// 删除1
                    db = x.getDb(daoConfig);
                    List<User> users = new ArrayList<>();
                    users= db.selector(User.class).findAll();
                    for (User user : users){
                        Log.i("testdb","test" + user);
                    }

                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }


在这里插入图片描述
ye,本讲讲的内容数据库框架-xUtils是不是简单又实用,谢谢您的阅读,本讲就到此结束啦

猜你喜欢

转载自blog.csdn.net/qq_46526828/article/details/107774238
今日推荐