Android 轻量级sqlite orm 框架

本文介绍了一个轻量级的Android SQLite ORM框架KKORM的使用方法,包括数据库的增删改查等基本操作,并通过实例展示了如何在Android应用中快速实现数据持久化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 轻量级sqlite orm 框架 可以方便我们对数据库的操作,只要几行代码就可以实现对数据库的增删改查。
下载 kkorm-library-1.0.jar ,导入工程。

package com.kkorm.activity;

import java.util.List;

import com.example.kkorm_demo.R;
import com.kkorm.data.Entity;

import kk.orm.DB;
import kk.orm.util.TimeUtil;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class KKORM_Activity extends Activity implements OnClickListener {

    private static final String TAG = KKORM_Activity.class.getName();
    private Context mContext;
    private Handler handler = new Handler();
    private DB db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_kkorm);

        mContext = this;

        findViewById(R.id.btn_save).setOnClickListener(this);
        findViewById(R.id.btn_drop_table).setOnClickListener(this);
        findViewById(R.id.btn_del).setOnClickListener(this);
        findViewById(R.id.btn_update).setOnClickListener(this);
        findViewById(R.id.btn_findAll).setOnClickListener(this);
        findViewById(R.id.btn_insert_stress).setOnClickListener(this);

        db = DB.getInstance(mContext);//获取实例
    }

    @SuppressLint("UseValueOf")
    @Override
    public void onClick(View v) {

        Entity entity = new Entity();
        List<Entity> all = null;

        switch (v.getId()) {
            case R.id.btn_save:// 插入操作

                entity.base_boolean = true;
                entity.base_double = 10.2;
                entity.base_float = 9.1f;
                entity.base_int = 99;
                entity.base_long = System.currentTimeMillis();

                entity.mBoolean = new Boolean(true);
                entity.mDouble = new Double(10.2);
                entity.mFloat = new Float(9.1);
                entity.mInteger = new Integer(99);
                entity.mLong = new Long(System.currentTimeMillis() / 1000);

                **db.save(entity);**

                break;

            case R.id.btn_del:// 删除操作

                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        List<Entity> list = db.findAll(Entity.class);
                        if (list != null && list.size() > 0) {
                            Entity entity = list.get(0);
                            **db.delete(entity);**
                        }

                        // db.deleteAll(Entity.class);
                        // db.deleteByWhere(Entity.class, "");
                    }
                }).start();

                break;
            case R.id.btn_update:// 更新操作

                // 防止插入1000条之后,查询缓慢导致卡死UI进程
                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        List<Entity> list = db.findAll(Entity.class);
                        if (list.size() > 0) {
                            Entity entity = list.get(0);
                            entity.base_int = 23482374;

                            // db.update(Entity, "id=1");
                            **db.update(entity);**
                        }
                    }
                }).start();

                break;

            case R.id.btn_findAll:// 查询操作

                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        Log.d(TAG, "开始查询");

                        TimeUtil.begin();

                        List<Entity> list = **db.findAll(Entity.class);**

                        TimeUtil.end();

                        String msg = "查询" + list.size() + "条耗时: " + TimeUtil.time();
                        Toast(msg);
                        Log.d(TAG, msg);
                    }

                }).start();

                break;

            case R.id.btn_drop_table:// 删除表

                **db.dropTable(Entity.class);**
                break;

            case R.id.btn_insert_stress:// 压力测试

                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        Entity entity = new Entity();
                        Log.d(TAG, "开始插入");

                        TimeUtil.begin();

                        // 开始事务。提高效率(不用事务,插入1000条数据可能要十几秒,用事务可能不到1秒,具体要看类是否复制)
                        **db.beginTrancation();**

                        for (int i = 0; i < 1000; i++) {
                            db.save(entity);
                        }

                        **db.endTrancation();**

                        TimeUtil.end();

                        String msg = "插入1000条耗时: " + TimeUtil.time();
                        Toast(msg);
                        Log.d(TAG, msg);
                    }
                }).start();

                break;

            default:
                break;
        }
    }

    private void Toast(final String msg) {
        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(mContext, msg, 0).show();
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值