Эффективное выполнение пакетного SQL-запроса на Android для обновления базы данных - PullRequest
6 голосов
/ 20 мая 2010

Как мы знаем разработчики Android, метод SQLiteDatabase execSQL может выполнять только одну инструкцию.

В документе сказано:

Выполнить один оператор SQL, который не является запросом.Например, CREATE TABLE, DELETE, INSERT и т. Д. Несколько операторов, разделенных ; s, не поддерживаются.

Мне нужно загрузить в пакет записей 1000 иподсчет.
Как мне эффективно вставить их?
И какой самый простой способ доставить эти SQL с помощью вашего apk?

Я уже упоминал, что уже есть системная база данных, и я буду запускать ее на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 ]

16 голосов
/ 20 мая 2010

Как мне эффективно их вставить?

Транзакция использования:

    db.beginTransaction();
    try {
        for(;;) {
            db.execSQL(...);
            }
        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }
1 голос
/ 20 мая 2010

Я думаю, что у вас есть единственный способ загрузить эти 1000 записей, теперь, когда вы развертываете эту БД с вашим файлом apk, посмотрите этот пост:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...