XUtils框架
使用Gradle构建时添加一下依赖即可
compile 'org.xutils:xutils:3.5.1'
需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 可选 -->
初始化,创建MyApplication.java
import android.app.Application;
import org.xutils.x;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
// x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
}
}
在清单文件application中添加
<application android:name=".MyApplication"></application>
数据库模块
参考博客:https://blog.csdn.net/huningjun/article/details/79869232
创建User
import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;
@Table(name = "user", onCreated = "CREATE UNIQUE INDEX index_name ON user(id,name,email)")
public class User {
/**
* name = "id":数据库表中的一个字段
* isId = true:是否是主键
* autoGen = true:是否自动增长
* property = "NOT NULL":添加约束
*/
@Column(name = "id",isId = true,autoGen = true,property = "NOT NULL")
private int id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
public User() {
}
public User(String name, String email) {
this.name = name;
this.email = email;
}
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
创建数据库
private void createDb() {
daoConfig = new DbManager.DaoConfig()
//默认在data/data/package name/database/下创建
.setDbName("test.db")
.setDbVersion(1)
.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) {
}
});
db = x.getDb(daoConfig);
}
添加数据
private void save() {
try {
User user = new User("wangwu","789456@qq.com");
db.save(user);
System.out.println("添加成功");
findAll();
} catch (DbException e) {
e.printStackTrace();
}
}
根据条件删除数据
public void delete(int id){
try {
// db.delete(User.class); //表中数据将被全部删除
WhereBuilder b = WhereBuilder.b();
b.and("id","=",2);
db.delete(User.class, b);
findAll();
} catch (DbException e) {
e.printStackTrace();
}
}
更新数据
public void updateById(int id){
try {
WhereBuilder b = WhereBuilder.b();
b.and("id","=",id); //构造修改的条件
KeyValue name = new KeyValue("name","lisi2");
db.update(User.class,b,name);
findAll();
} catch (DbException e) {
e.printStackTrace();
}
}
根据条件查询数据
public void findeById(int id){
try {
List<User> all = null;
all = db.selector(User.class).where("id","=",id)
// .and("id",">",4)
.findAll();
List<String > list = new ArrayList<String>();
for(int i=0;i<all.size();i++){
list.add(all.get(i).toString());
}
adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
lv1.setAdapter(adapter);
} catch (DbException e) {
e.printStackTrace();
}
}
查询全部数据
private void findAll() {
//findAll():查询所有结果
List<User> uerAll = null;
try {
uerAll = db.findAll(User.class);
List<String > list = new ArrayList<String>();
for(int i=0;i<uerAll.size();i++){
list.add(uerAll.get(i).toString());
}
adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
lv1.setAdapter(adapter);
} catch (DbException e) {
e.printStackTrace();
}
}
完整代码:
本人出现使用onclick方法无法使用的问题,所以用了OnClickListener
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import org.xutils.DbManager;
import org.xutils.common.util.KeyValue;
import org.xutils.db.sqlite.WhereBuilder;
import org.xutils.ex.DbException;
import org.xutils.x;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private DbManager.DaoConfig daoConfig;
private DbManager db;
private Button btn_save,btn_delete,btn_up,btn_findById,btn_findAll;
private ListView lv1;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv1 = findViewById(R.id.lv1);
btn_save = findViewById(R.id.btn_save);
btn_delete = findViewById(R.id.btn_delete);
btn_up = findViewById(R.id.btn_up);
btn_findById = findViewById(R.id.btn_findById);
btn_findAll = findViewById(R.id.btn_findAll);
btn_save.setOnClickListener(this);
btn_delete.setOnClickListener(this);
btn_up.setOnClickListener(this);
btn_findById.setOnClickListener(this);
btn_findAll.setOnClickListener(this);
createDb();
}
private void createDb() {
daoConfig = new DbManager.DaoConfig()
//默认在data/data/package name/database/下创建
.setDbName("test.db")
.setDbVersion(1)
.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) {
}
});
db = x.getDb(daoConfig);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_save:
System.out.println("save");
save();
break;
case R.id.btn_delete:
System.out.println("delete");
delete(1);
break;
case R.id.btn_up:
System.out.println("update");
updateById(1);
break;
case R.id.btn_findById:
System.out.println("findById");
findeById(3);
break;
case R.id.btn_findAll:
System.out.println("findAll");
findAll();
break;
}
}
private void save() {
try {
User user = new User("wangwu","789456@qq.com");
db.save(user);
System.out.println("添加成功");
findAll();
} catch (DbException e) {
e.printStackTrace();
}
}
private void findAll() {
//findAll():查询所有结果
List<User> uerAll = null;
try {
uerAll = db.findAll(User.class);
List<String > list = new ArrayList<String>();
for(int i=0;i<uerAll.size();i++){
list.add(uerAll.get(i).toString());
}
adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
lv1.setAdapter(adapter);
} catch (DbException e) {
e.printStackTrace();
}
}
public void updateById(int id){
try {
WhereBuilder b = WhereBuilder.b();
b.and("id","=",id); //构造修改的条件
KeyValue name = new KeyValue("name","lisi2");
db.update(User.class,b,name);
findAll();
} catch (DbException e) {
e.printStackTrace();
}
}
public void delete(int id){
try {
// db.delete(User.class); //表中数据将被全部删除
WhereBuilder b = WhereBuilder.b();
b.and("id","=",2);
db.delete(User.class, b);
findAll();
} catch (DbException e) {
e.printStackTrace();
}
}
public void findeById(int id){
try {
List<User> all = null;
all = db.selector(User.class).where("id","=",id)
// .and("id",">",4)
.findAll();
List<String > list = new ArrayList<String>();
for(int i=0;i<all.size();i++){
list.add(all.get(i).toString());
}
adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
lv1.setAdapter(adapter);
} catch (DbException e) {
e.printStackTrace();
}
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
android:padding="16dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_save"
android:text="添加数据"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_delete"
android:text="条件删除"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_save"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_up"
android:text="更改数据"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_delete"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_findById"
android:text="条件查询"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_up"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_findAll"
android:text="查询所有"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_findById"/>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lv1"
android:text="查询所有"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_findAll"/>
</android.support.constraint.ConstraintLayout>