前言
为了丰富这个对于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,写完收工。