代码之家  ›  专栏  ›  技术社区  ›  Pentium10

在Android上高效地执行批处理SQL查询,用于升级数据库

  •  6
  • Pentium10  · 技术社区  · 14 年前

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

    博士说:

    执行不是查询的单个SQL语句。例如, CREATE TABLE , DELETE , INSERT 等。多个语句由 ; 不支持。

    我要载入一批记录,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();
        }
    
    2 回复  |  直到 14 年前
        1
  •  16
  •   yanchenko    14 年前

    如何有效地插入这些内容?

    使用事务:

        db.beginTransaction();
        try {
            for(;;) {
                db.execSQL(...);
                }
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }
    
        2
  •  1
  •   Ricardo Villamil    14 年前

    我认为您所拥有的是加载1000条记录的唯一方法,现在,只要将该数据库与您的APK文件一起部署,请查看以下文章:

    http://www.helloandroid.com/tutorials/how-have-default-database