эффективная вставка в sqlite android - PullRequest
0 голосов
/ 23 января 2012

Кто-нибудь знает более эффективный способ вставки строки в sqlite?Я беспокоюсь о разделении функций.Должен ли я хранить значения в XML или JSON?Если у вас есть какие-либо предложения, я хотел бы знать.

мой массив значений

private static final String[] inShopCategories = 
     {"Babies;5;@drawable/ic_launcher",
"Fruit / Vegetables;3;@drawable/ic_launcher",
"Meat / Fisth;2;@drawable/ic_launcher"};

и мой код:

 public void onCreate(SQLiteDatabase db){
        //create table
        db.execSQL(cShopCateg);

        //insert default shopping categories with InsertHelper
        InsertHelper ih = new InsertHelper(db, tShopCateg);
        final int nameCol = ih.getColumnIndex(KEY_NAME);
        final int priorityCol = ih.getColumnIndex(KEY_PRIORITY);
        final int iconCol = ih.getColumnIndex(KEY_ICON);

        for(int i=-1,l=inShopCategories.length; ++i<l;){
            ih.prepareForInsert();
            String[] s = inShopCategories[i].split(";");
            ih.bind(nameCol, s[0]);
            ih.bind(priorityCol, s[1]);
            ih.bind(iconCol, s[2]);
            ih.execute();
        }

    }

1 Ответ

3 голосов
/ 23 января 2012

Кто-нибудь знает более эффективный способ вставки строки в sqlite?

Да.

Я беспокоюсь о функции разделения

Это имеет смысл.Вы тратите впустую циклы ЦП без веской причины.

Должен ли я хранить значения в формате xml или json?

Это приведет к потере большего количества циклов ЦП без веской причины.

если у вас есть какие-либо предложения, я хотел бы знать.

Вариант № 1: избавиться от всего этого кода и предварительно упаковать вашу базу данных, с уже имеющимися даннымивставляется вместе с вашим приложением, используя что-то вроде SQLiteAssetHelper.

Опция # 2: пусть ваши String[] будут полными операторами SQL INSERT и выполняют их, а не проходите черезмного разборов и конкатенаций для достижения одного и того же конца.

Вариант № 3: Если кто-то направляет пистолет на вашу голову, чтобы использовать InsertHelper, имейте двумерный массив String (String[][])для ваших строк и столбцов.

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