android - Android 上高效的批量 SQL 查询执行,用于升级数据库

标签 android sqlite upgrade

正如我们 Android 开发人员所知,SQLiteDatabase execSQL 方法只能执行一条语句。

文档说:

Execute a single SQL statement that is not a query. For example, CREATE TABLE, DELETE, INSERT, etc. Multiple statements separated by ;s are not supported.

我必须加载一批记录,1000 条并且还在增加。
我如何有效地插入这些?
使用您的 apk 交付这些 SQL 的最简单方法是什么?

我提到,已经有一个系统数据库,我将在 onUpdate 事件上运行它。

到目前为止我有这段代码:

List<String[]> li = new ArrayList<String[]>();
        li.add(new String[] {
                "-1", "Stop", "0"
        });
        li.add(new String[] {
                "0", "Start", "0"
        });
    /* the rest of the assign */
try {
        for (String[] elem : li) {
            getDb().execSQL(
                    "INSERT INTO " + TABLENAME + " (" + _ID + "," + NAME + "," + PARSE_ORDER
                            + ") VALUES (?,?,?)", elem);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

最佳答案

How do I insert these efficiently?

使用交易:

    db.beginTransaction();
    try {
        for(;;) {
            db.execSQL(...);
            }
        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }

关于android - Android 上高效的批量 SQL 查询执行,用于升级数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2876236/

相关文章:

android - 如何将 Listview 的内容发送到另一个 Activity?

java - 如何在android listview中显示数据库信息?出现错误 NULL 指针异常

java - 使用 DataSource 通过 (Xerial) sqlite-jdbc 驱动程序连接到 SQLite

upgrade - Rails 5升级问题: database configuration does not specify adapter

java - Java 7 和 Java 8 之间有哪些主要区别?

android - 如何强制 PreferenceActivity 处理我的 SharedPreferences?

xml - 用于 Hudson 摄取的 Android InstrumentationTestRunner XML 输出

Android XML 编辑器在 Eclipse 中损坏

json - 用于分层数据集的高效可移植数据库-Json,Sqlite还是?

php - 在 CentOS 6.7 上从 php 5.5.x 升级到 5.6.x