xUtils框架之DB模块

权限:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

导入:

implementation 'org.xutils:xutils:3.8.5'

核心代码:

package com.pad.untek.mes.mespda.xutils;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

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;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class XUtilsTestActivity extends BaseAcitvity {

    @BindView(R.id.xwce_id)
    XWClearEditText xwceId;
    @BindView(R.id.xwce_username)
    XWClearEditText xwceUsername;
    @BindView(R.id.xwce_password)
    XWClearEditText xwcePassword;
    @BindView(R.id.xwce_age)
    XWClearEditText xwceAge;
    @BindView(R.id.xwce_sex)
    XWClearEditText xwceSex;
    @BindView(R.id.tv_add)
    TextView tvAdd;
    @BindView(R.id.tv_delete)
    TextView tvDelete;
    @BindView(R.id.tv_change)
    TextView tvChange;
    @BindView(R.id.tv_query)
    TextView tvQuery;
    @BindView(R.id.linlayout)
    LinearLayout linlayout;
    @BindView(R.id.rv_list)
    RecyclerView rvList;


    Context context;
    XUtilsQueryDataAdapter adapter;
    List<User> userList = new ArrayList<>();

    int id;
    String username;
    String password;
    int age;
    String sex;
    String selection = "";
    String selectionArgs = "";

    DbManager dbManager = null;
    DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
            .setDbName("user.db")
            // 不设置dbDir时, 默认存储在app的私有目录
            // .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践
            .setDbVersion(2)
            .setDbOpenListener(new DbManager.DbOpenListener() {
                @Override
                public void onDbOpened(DbManager db) throws DbException {
                    db.getDatabase().enableWriteAheadLogging();
                }
            })
            .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                @Override
                public void onUpgrade(DbManager db, int oldVersion, int newVersion) throws DbException {

                }
            });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xutils_test);
        ButterKnife.bind(this);
        initView();
        xUtilsSetting();
    }

    /**
     * xUtils 配置
     */
    private void xUtilsSetting() {
        x.Ext.init(getApplication());
        x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
        x.view().inject(this);//没有用到view注解可以先不用
    }

    private void initView() {
        context = this;
        rvList.setLayoutManager(new LinearLayoutManager(this));
    }

    @OnClick({R.id.tv_add, R.id.tv_delete, R.id.tv_change, R.id.tv_query})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.tv_add:
                if (isEmpty(1)) {
                    addData(id, username, password, age, sex);
                    queryData("", "");//添加后显示所有数据
                }
                break;

            case R.id.tv_delete:
                if (isEmpty(2)) {
                    deleteData(selection, selectionArgs);
                    queryData("", "");//删除后显示所有数据
                }
                break;

            case R.id.tv_change:
                if (isEmpty(3)) {
                    updateData(id);
                    queryData("", "");//修改后显示所有数据
                }
                break;

            case R.id.tv_query:
                if (isEmpty(4)) {
                    queryData(selection, selectionArgs);
                }
                break;
        }
    }


    /**
     * 显示数据
     *
     * @param userList 数据集合
     */
    private void showData(List<User> userList) {
        if (userList.size() == 0) {
            toastSpek("没有数据!");
            return;
        }

        if (adapter == null) {
            rvList.setAdapter(new XUtilsQueryDataAdapter(context, userList));
        } else {
            adapter.updateDataList(userList);
        }
    }

    /**
     * 条件查询(为空则查询所有数据)
     *
     * @param selection     条件
     * @param selectionArgs 条件值
     */
    private void queryData(String selection, String selectionArgs) {
        if (userList.size() > 0) {
            userList.clear();
            rvList.removeAllViews();
        }

        try {
            dbManager = x.getDb(daoConfig);
            if (selection.isEmpty()) {
                userList = dbManager.selector(User.class).findAll();
            } else {
                userList = dbManager.selector(User.class).orderBy("id", true)
                        .where(selection, "=", selectionArgs).limit(1000).findAll();
            }

            showData(userList);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    /**
     * 修改数据
     *
     * @param id id是唯一键,不可修改,其他属性根据id来修改
     */
    private void updateData(int id) {
        String selection = "id";
        String selectionUsername = "username";
        String selectionPassword = "password";
        String selectionAge = "age";
        String selectionSex = "sex";
        try {
            dbManager = x.getDb(daoConfig);
            if (!username.isEmpty()) {
                dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionUsername, username));
            }
            if (!password.isEmpty()) {
                dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionPassword, password));
            }
            if (!xwceAge.getText().toString().trim().isEmpty()) {
                dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionAge, age));
            }
            if (!sex.isEmpty()) {
                dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionSex, sex));
            }
            toastSpek("修改成功!");
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除数据
     *
     * @param selection     条件
     * @param selectionArgs 条件值
     */
    private void deleteData(String selection, String selectionArgs) {
        try {
            dbManager = x.getDb(daoConfig);
            dbManager.delete(User.class, WhereBuilder.b(selection, "=", selectionArgs));
            toastSpek("删除成功!");
        } catch (DbException e) {
            e.printStackTrace();
            return;
        }
    }

    private void addData(int id, String username, String password, int age, String sex) {
        try {
            dbManager = x.getDb(daoConfig);
            User user = new User();
            user.id = id;
            user.username = username;
            user.password = password;
            user.age = age;
            user.sex = sex;
            dbManager.save(user);
            toastSpek("添加成功!");
        } catch (DbException e) {
            e.printStackTrace();
            return;
        }
    }

    /**
     * 非空判断
     *
     * @param type
     * @return
     */
    private boolean isEmpty(int type) {
        clearSaveContents();
        username = xwceUsername.getText().toString().trim();
        password = xwcePassword.getText().toString().trim();
        sex = xwceSex.getText().toString().trim();

        if (!xwceAge.getText().toString().trim().isEmpty()) {
            age = Integer.parseInt(xwceAge.getText().toString().trim());
        }

        if (!xwceId.getText().toString().trim().isEmpty()) {
            id = Integer.parseInt(xwceId.getText().toString().trim());
        }

        if (type == 1) {//增加数据,资料必须填写完整
            if (username.isEmpty() || password.isEmpty() || xwceAge.getText().toString().trim().isEmpty() || sex.isEmpty()) {
                toastSpek("请把资料填写完整!");
                return false;
            }
        }

        if (type == 2) {//删除数据,可以根据任何项删除数据
            if (!sex.isEmpty()) {
                selection = "sex";
                selectionArgs = sex;
                return true;
            }

            if (!xwceAge.getText().toString().trim().isEmpty()) {
                selection = "age";
                selectionArgs = xwceAge.getText().toString().trim();
                return true;
            }

            if (!password.isEmpty()) {
                selection = "password";
                selectionArgs = password;
                return true;
            }

            if (!username.isEmpty()) {
                selection = "username";
                selectionArgs = username;
                return true;
            }

            if (!xwceId.getText().toString().trim().isEmpty()) {
                selection = "id";
                selectionArgs = xwceId.getText().toString().trim();
                return true;
            }
            toastSpek("请填写删除条件!");
            return false;
        }

        if (type == 3) {//修改数据,必须根据id修改,id是唯一键
            if (xwceId.getText().toString().trim().isEmpty()) {
                toastSpek("请填写ID!");
                return false;
            }
        }

        if (type == 4) {//查询数据,可以根据任何项查询数据
            if (!sex.isEmpty()) {
                selection = "sex";
                selectionArgs = sex;
                return true;
            }

            if (!xwceAge.getText().toString().trim().isEmpty()) {
                selection = "age";
                selectionArgs = sex;
                return true;
            }

            if (!password.isEmpty()) {
                selection = "password";
                selectionArgs = password;
                return true;
            }

            if (!username.isEmpty()) {
                selection = "username";
                selectionArgs = username;
                return true;
            }

            if (!xwceId.getText().toString().trim().isEmpty()) {
                selection = "id";
                selectionArgs = xwceId.getText().toString().trim();
                return true;
            }
        }

        return true;
    }

    /**
     * 清除保存的内容
     */
    private void clearSaveContents() {
        username = "";
        password = "";
        age = -1;
        sex = "";
        selection = "";
        selectionArgs = "";

    }

    /**
     * Toast 提示
     *
     * @param s 提示内容
     */
    private void toastSpek(String s) {
        Toast.makeText(context, s, Toast.LENGTH_LONG).show();
    }
}

 

完整项目可以到这里下载:

https://download.csdn.net/download/Jeyden_827/12695357

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值