`

android -> sqlite 快速大批量插入

 
阅读更多

结果:

1W 数据 658 MS

10W 数据 3482 MS

 

 

 

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import android.os.Bundle;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //-------------

        long start = System.currentTimeMillis();

        List<RemoteAppInfo> l1 = new ArrayList<RemoteAppInfo>();
        RemoteAppInfo r1 = new RemoteAppInfo();
        r1.setParam1("ppp1");
        r1.setParam2("pppp2");
        l1.add(r1);
        for (int x =0;x<100000;x++){
            l1.add(r1);
        }

        MySQLiteHelper sqlHelper = new MySQLiteHelper(this, "test.db", null, 1);

        insertBySql(sqlHelper,l1);

        long end = System.currentTimeMillis();

        Log.d("mft", "插入完了, 执行时间 : " + (end - start));


    }
    public static boolean insertBySql(SQLiteOpenHelper openHelper,
                                      List<RemoteAppInfo> list) {
        if (null == openHelper || null == list || list.size() <= 0) {
            return false;
        }
        SQLiteDatabase db = null;
        try {
            db = openHelper.getWritableDatabase();
            String sql = "insert into " + "person" + "("
                    + "name" + ","// 包名
                    + "age"
                    + ") " + "values(?,?)";
            SQLiteStatement stat = db.compileStatement(sql);
            db.beginTransaction();
            for (RemoteAppInfo remoteAppInfo : list) {
                stat.bindString(1, remoteAppInfo.getParam1());
                stat.bindString(2, remoteAppInfo.getParam2());
                long result = stat.executeInsert();
                if (result < 0) {
                    return false;
                }
            }
            db.setTransactionSuccessful();
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                if (null != db) {
                    db.endTransaction();
                    db.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return true;
    }

}


class MySQLiteHelper extends SQLiteOpenHelper{
    //调用父类构造器
    public MySQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                          int version) {
        super(context, name, factory, version);
    }

    /**
     * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
     * 重写onCreate方法,调用execSQL方法创建表
     * */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");

    }

    //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

}

class RemoteAppInfo {

    private String param1;
    private String param2;

    public String getParam1() {
        return param1;
    }

    public void setParam1(String param1) {
        this.param1 = param1;
    }

    public String getParam2() {
        return param2;
    }

    public void setParam2(String param2) {
        this.param2 = param2;
    }



}

 

分享到:
评论

相关推荐

    android-database-sqlcipher-4.4.0+androidx-\sqlite-2.1.0.zip

    android-database-sqlcipher-4.4.0、sqlite-2.1.0

    Android-sqlite-android一个AndroidSQLite支持库

    1. **易于使用**:`sqlite-android`提供了简洁的API,使得开发者能够快速地创建、读取、更新和删除数据库中的记录,无需编写大量的SQL语句。 2. **对象映射**:它自动将Java对象与数据库表进行映射,开发者只需要...

    Android代码-react-native-sqlite-storage

    react-native-sqlite-storage SQLite3 Native Plugin for React Native for both Android (Classic and Native) and iOS Inspired by fantastic work done by Chris Brody I did not want to re-invent the wheel. ...

    android-database-sqlcipher-4.4.0+sqlite-2.1.0.zip

    android-database-sqlcipher-4.4.0和sqlite-2.1.0 官网下载太慢了,还总是下不下来,终于下载下来就分享出来。 安装清参考博客:https://blog.csdn.net/zdwcmy/article/details/106990422

    android-sqlite-encrypt

    "android-sqlite-encrypt"正是为了解决这一问题而设计的SDK,它为Android开发者提供了一个强大的SQLite数据库加密解决方案。 "android-sqlite-encrypt"库的核心功能在于对SQLite数据库进行透明的加密,这意味着...

    SQLite.Interop.dll 支持sqlite expert professional 4.2密码录入

    SQLite.Interop.dll for sqlite expert ...2.重新打开SQLite Expert,Tools --&gt; Options --&gt; Data --&gt; SQLite Library中选择“SQLite.Interop.dll *****”那一项,点击 OK; 3.不好使,就重启下sqlite expert

    Android-嵌入式SQLite数据库.doc

    Android-嵌入式SQLite数据库.doc

    SQLite.Interop.dll for sqlite expert professional 4.2

    重新打开SQLite Expert,Tools --&gt; Options --&gt; Data --&gt; SQLite Library中选择“SQLite.Interop.dll *****”那一项,点击 OK;3.数据库右键“Enter Encryption Key” 和 “Set Default Encryption Key” 菜单项就...

    SQLite数据库.rar

    在学习的过程中遇到了配置问题是主要的,能得找bug找了大半天,但是还是坚持的心态把问题给解决了,比如需要哪几个文件,...工程属性-&gt;链接器-&gt;输入-&gt;附加依赖项-&gt;输入sqlite3.lib,然后再向工程加入头文件和源文件。

    Android-sqlite3命令-Android开发-sqlite3_armv7

    在Android开发中,SQLite是一个至关重要的组件,它是一个轻量级的、自包含的、开源的SQL数据库引擎,被广泛用于存储和管理应用程序中的结构化数据。本文将深入探讨`sqlite3`命令行工具在Android环境下的应用,尤其是...

    geoserver-2.15-SNAPSHOT-gwc-sqlite-plugin.zip

    而gwc-sqlite-plugin则是将这种缓存能力扩展到了SQLite数据库,这是一种轻量级、文件式的数据库,无需独立的服务器进程,适合于移动设备或资源有限的环境。 在提供的压缩包中,有四个重要的文件: 1. **sqlite-...

    基于Linux开发环境设计的SqLite员工管理系统数据库

    基于Linux开发环境设计的SqLite员工管理系统数据库,涉及客户端,...管理员登录-&gt;指令选项界面-&gt;增删改查员工信息-&gt;服务器-&gt;数据库 员 工: 注册-&gt;登录-&gt;指令选项界面-&gt;查询(索引条件: 姓名+员工号) -&gt;服务器-&gt;数据库。

    sqlite-netFx20-binary-x64-2005-1.0.112.0.zip

    支持sqlite 数据块加密解密插件。解压文件,将里面的SQLite.Interop.dll拷贝到SQLiteExpert的安装目录然后启动SQLiteExpert,Tools-&gt;Options-&gt;SQLite library,选择带SQLite.Interop.dll的项即可。

    Android-数据库SQLite的简单示例

    SQLite 是一个轻量级的关系数据库管理系统,它可以在 Android 中使用。Android 提供了一个名为 SQLiteOpenHelper 的抽象类,用于帮助开发者创建和管理 SQLite 数据库。 要使用 SQLiteDatabase,需要继承 ...

    android-sqlite-asset-helper.jar

    官方版本,亲测可用

    Android-sqlite数据库

    在Android平台上,SQLite是一个常用的轻量级关系型数据库,它被集成到系统中,用于存储应用程序的数据。在Android应用开发中,SQLite数据库是通过Java API进行操作的,但有时为了性能提升或者特定功能的实现,开发者...

    Android储存---SQLite数据库的简单使用,实现增删改查

    SQLite是一个轻量级的、关系型的数据库管理系统,它被嵌入到Android系统中,为应用程序提供数据存储功能,无需额外安装服务器。本教程将深入讲解如何在Android中使用SQLite数据库进行基本的增删改查操作。 首先,...

    android-SQLITE.rar_android_android sqlite_sqlite

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统,适用于移动设备。SQLite被集成到Android操作系统中,允许开发者在应用程序中存储和管理数据。本实例将详细探讨如何在Android中使用...

    065集-Android中SQLite编程-数据的插入

    在Android应用开发中,SQLite是一个重要的组成部分,它是一款轻量级的数据库系统,用于存储、管理应用程序中的结构化数据。本教程聚焦于Android中SQLite编程的一个关键操作——数据的插入,这对于任何涉及到本地数据...

Global site tag (gtag.js) - Google Analytics