Android-xUtils-数据库(db)的使用+本地数据库内容查看方式

最近在项目中用到了数据库的操作,项目完成后,在此记录一下使用xUtils框架数据库类的使用以及查看手机本地数据库内容的方法。
一:使用方法

1.添加依赖:

implementation 'org.xutils:xutils:3.3.40'

2.在全局变量中注册xUtils,并且获取数据库的管理器,通过此管理器对数据库进行增删改查(要注意的是全局变量需要在AndroidManifest中去添加属性)
全局变量设置方法超链接

public class BaseContext extends Application {
    private static volatile Context mContext;
    private static BaseContext instance;
    public static BaseContext getInstance() {
        return instance;
    }
    public void onCreate() {
        super.onCreate();
        //注册xUtils
        x.Ext.init(this);
        mContext = getApplicationContext();
        instance = this;
    }
    public static Context getContext() {
        return mContext;
    }
    /**
     * @return 获得数据库的管理器,通过这个管理器对数据库进行增删改查
     */
    public DbManager dbManager(){
        DbManager.DaoConfig daoConfig = new DbManager.DaoConfig();
        //设置数据库的名字
        daoConfig.setDbName("image.db");
        //设置数据库的版本号,默认为1
        //daoConfig.setDbVersion(1);
        return x.getDb(daoConfig);
    }
}

3.数据库中需要有表,以及表中的参数,下面来设置
User类

//设置数据库表的名字
@Table(name = "imageinfo")
public class User {
	@Column(name = "imageurl")
    private String imageurl;
    @Column(name = "imagetime")
    private String imagetime;
    @Column(name = "imagehashcode")
    private String imagehashcode;
    @Column(name = "imagehandle")
    private String imagehandle;
    @Column(name = "id", isId = true, autoGen = true)//注释列名主键,主动增长
    private int id;
    public String getImageurl() {
        return imageurl;
    }

    public String getImagetime() {
        return imagetime;
    }

    public String getImagehashcode() {
        return imagehashcode;
    }

    public String getImagehandle() {
        return imagehandle;
    }

    public void setImageurl(String imageurl) {
        this.imageurl = imageurl;
    }

    public void setImagetime(String imagetime) {
        this.imagetime = imagetime;
    }

    public void setImagehashcode(String imagehashcode) {
        this.imagehashcode = imagehashcode;
    }

    public void setImagehandle(String imagehandle) {
        this.imagehandle = imagehandle;
    }
    public int getId() {
        return id;
    }

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

    public void setState(int state) {
        this.state = state;
    }
    @Column(name = "state")
    private int state;

    @NonNull
    @Override
    public String toString() {
        return "{" +
                "imageurl='" + imageurl + '\'' +
                ", id=" + id +
                ", imagetime='" + imagetime + '\'' +
                ", imagehashcode=" + imagehashcode +
                ", state=" + state +
                ", imagehandle='" + imagehandle + '\'' +
                '}';
    }
}

这样一个数据库在程序启动的时候就创建好了。
4.下面介绍对数据库的操作
(1)添加数据:

 //将数据保存到数据库中
DbManager dbManager = BaseContext.getInstance().dbManager();
User user = new User();
user.setImageurl(address);
user.setImagetime(exifInterface.getAttribute(ExifInterface.TAG_DATETIME));
user.setImagehashcode(String.valueOf(objectInfo.hashCode()));
user.setImagehandle(String.valueOf(objectHandle));
user.setState(1);
dbManager.save(user);

(2)删除数据:
删除所有数据:

DbManager manager = BaseContext.getInstance().dbManager();
            try {
                manager.delete(User.class);
            } catch (DbException e) {
                e.printStackTrace();
            }

删除指定数据:

//删除imageurl=1的数据
DbManager dbManager = BaseContext.getInstance().dbManager();
        try {
            dbManager.delete(User.class,WhereBuilder.b("imageurl","=","1"));
        } catch (DbException e) {
            e.printStackTrace();
        }

删除指定id的数据:

DbManager dbManager = BaseContext.getInstance().dbManager();
        try {
            dbManager.deleteById(User.class,1);
        } catch (DbException e) {
            e.printStackTrace();
        }

(3)修改数据:

//修改imageurl = address的state为3
try {
         DbManager dbManager = BaseContext.getInstance().dbManager();
         WhereBuilder whereBuilder = WhereBuilder.b();
         whereBuilder.and("imageurl", "=", address); 
         dbManager.update(User.class, whereBuilder, new KeyValue("state", 3));
      } catch (DbException e) {
          e.printStackTrace();
 }

(4)查找数据:
查找所有内容:

 DbManager dbManager = BaseContext.getInstance().dbManager();
            try {
                List<User> all = dbManager.findAll(User.class);
                for (int i = 0; i < all.size(); i++) {
                    Log.e("TAG", all.get(i).toString());//打印显示
                }
            } catch (DbException e) {
                e.printStackTrace();
            }

查找指定内容:
我这里查找imageurl=fileString与state=1的所有数据,查到后,将其添加到imagePaths中

扫描二维码关注公众号,回复: 10183107 查看本文章
DbManager dbManager = BaseContext.getInstance().dbManager();
                List<User> imageMessage = null;
                try {
                    imageMessage = dbManager.selector(User.class).where("imageurl", "=", fileString).and("state","=",1).findAll();
                    if (imageMessage == null || imageMessage.size() == 0){
                        continue;
                    }else {
                        User user = imageMessage.get(0);
                        String imageurl = user.getImageurl();
                        imagePaths.add(imageurl);
                    }
                } catch (DbException e) {
                    e.printStackTrace();
                }

(5)删除数据库:

 DbManager dbManager = BaseContext.getInstance().dbManager();
        try {
            dbManager.dropDb();
        } catch (DbException e) {
            e.printStackTrace();
        }

(6)删除表:

DbManager dbManager = BaseContext.getInstance().dbManager();
        try {
            dbManager.dropTable(User.class);
        } catch (DbException e) {
            e.printStackTrace();
        }

(7)往表中添加新字段:

DbManager dbManager = BaseContext.getInstance().dbManager();
        try {
            dbManager.addColumn(User.class,"test");
        } catch (DbException e) {
            e.printStackTrace();
        }

上面对于数据库的操作,大家大可以在项目中根据自己的需求写一个工具类,操作起来比较方便。
二:查看数据库内容
对于数据的查看,之前在网上找了一个软件(SQLiteStudio),附上下载地址,以及步骤。

链接:https://pan.baidu.com/s/1zCjK-qFEOcdUv13bXLBvkQ
提取码:ws6z

我的Android Studio版本为3.5.2。
保证你的手机有保存的数据库,将手机连接到电脑。
(1)点击右侧的Device File Explorer
在这里插入图片描述
依次打开data-data-应用包名
在这里插入图片描述
右键点击image.db(image为你设置的数据库名字),点击Save As…将其保存在电脑上。
(2)将下载的SQLiteStudio进行解压,找到
在这里插入图片描述
打开,点击左上角数据库-添加数据库(快捷键Ctrl+O),出现如下界面

在这里插入图描述
选择你下载的后缀名为db的数据库,点击Ok将其打开。
(3)
在这里插入图片描述
这里的imageinfo为保存的数据库的表名,双击在右侧即可查看数据库内容
在这里插入图片描述

发布了15 篇原创文章 · 获赞 5 · 访问量 358

猜你喜欢

转载自blog.csdn.net/weixin_44059750/article/details/105100897