前言
爲了豐富這個對於Android SQLite的使用,特別寫了這篇文章,也算是做一個筆記吧。
效果圖
正文
LitePal是Android中比較輕便的開源數據庫框架,是郭霖大神寫的,本文只做最簡單的使用。
① 創建項目
然後是導入一些依賴庫,其中包括LitePal,還有一些是爲了方便展示數據的。
② 配置項目
在app下的build.gradle中添加配置
compileOptions {//指定使用的JDK1.8
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
dataBinding {
enabled = true
}
//數據解析
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
//Android SQLite操作框架
implementation 'org.litepal.guolindev:core:3.1.1'
然後創建assets文件夾,文件夾下面新建一個litepal.xml文件
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--數據庫名稱-->
<dbname value="Demo" />
<!--數據庫版本-->
<version value="1" />
<!--映射模型-->
<list>
</list>
</litepal>
創建DemoApplication
然後在AndroidManifest.xml中指定
現在可以創建數據模型了。
③ 數據配置
這裏建了一個model然後裏面放數據實體,繼承LitePalSupport是爲了能夠使用增刪改查,代碼如下:
package com.llw.litepalusedemo.model;
import org.litepal.crud.LitePalSupport;
//區/縣
public class Area extends LitePalSupport {
private int id;//這個id是可以不用的,因爲會默認創建一個自增的id
private String name;
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;
}
}
然後在litepal.xml中配置
④ 一頓操作
首先改動activity_main.xml佈局,在最外側增加標籤,改動後代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_result"
android:gravity="center"
android:text="結果"
android:textColor="#000"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<LinearLayout
android:gravity="center"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/btn_add"
android:text="增加數據"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_update"
android:text="修改數據"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_query"
android:text="查詢數據"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_delete"
android:text="刪除數據"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
</layout>
然後進入MainActivity,
代碼如下:
package com.llw.litepalusedemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import android.widget.Toast;
import com.google.gson.Gson;
import com.llw.litepalusedemo.databinding.ActivityMainBinding;
import com.llw.litepalusedemo.model.Area;
import org.litepal.LitePal;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding mb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//綁定視圖
mb = DataBindingUtil.setContentView(this,R.layout.activity_main);
mb.btnAdd.setOnClickListener(v -> {//添加數據
Area area = new Area();
area.setName("福田");
area.save();//保存
if(area.save()){
showMsg("添加數據成功");
}else {
showMsg("添加數據失敗");
}
});
mb.btnUpdate.setOnClickListener(v -> {//修改數據
Area area = new Area();
area.setName("寶安");
area.update(1);//修改指定ID的數據
//area.setName("南山");
//area.updateAll("name = ?","福田");//修改所有名字爲福田的爲南山
showMsg("修改數據成功");
});
mb.btnQuery.setOnClickListener(v -> {//查詢數據
//查詢指定ID的數據
//Area area = LitePal.find(Area.class,1);
//查詢所有數據
List<Area> area = LitePal.findAll(Area.class);
mb.tvResult.setText(new Gson().toJson(area));
});
mb.btnDelete.setOnClickListener(v -> {
LitePal.delete(Area.class, 1);//刪除指定id
//LitePal.deleteAll(Area.class, "name = ?" , "福田");//刪除所有name爲福田的
showMsg("刪除數據成功");
});
}
private void showMsg(String msg){
Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
}
}
效果圖
OK,寫完收工。