最近在項目中用到了數據庫的操作,項目完成後,在此記錄一下使用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中
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爲保存的數據庫的表名,雙擊在右側即可查看數據庫內容