Как добавить исходные данные в базу данных SQLite? - PullRequest
9 голосов
/ 21 мая 2011

Мне нужно добавить начальные значения в базу данных SQLite при первом запуске приложения. Как мне это сделать?

Ответы [ 6 ]

13 голосов
/ 21 мая 2011

В файле класса DBAdapter.java вы можете сделать это.


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_1);
        db.execSQL(CREATE_TABLE_2);
        db.execSQL(CREATE_TABLE_3);
        db.execSQL("insert into " + DATABASE_TABLE3 + "(" + KEY_ROWID + ","
                + KEY_DEF + ") values(1,'')");
    }

Как этот тип.

2 голосов
/ 21 мая 2011

Вы должны использовать SQLiteOpenHelper для этого

    private static class OpenHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "rss.sqlite";
    private static final int DATABASE_VERSION = 1;

    OpenHelper(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE RSS (TITLE TEXT, LINK TEXT, DESCR TEXT, PUBDATE DATE, GUID TEXT, READ TEXT, TYPE TEXT)");
        db.execSQL("CREATE TABLE PAGE (LINK TEXT, CONTENT TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

и использовать его в коде

    OpenHelper openHelper = new OpenHelper(this.context);
    this.db = openHelper.getWritableDatabase();
2 голосов
/ 21 мая 2011

Вы можете создать свою собственную базу данных SQLite, поместить ее в папку активов и получить к ней доступ, как показано в ответе по этой ссылке: добавление своей собственной базы данных SQLite в приложение для Android

2 голосов
/ 21 мая 2011

Подобные требования для однократной или первой загрузки являются общими.

1) Установите переменную флага с именем FIRSTLOAD и установите для нее значение True.Обязательно сохраняйте эту переменную в изолированном хранилище на устройстве для чтения при каждом запуске приложения.2) Создайте метод, который проверяет значение FIRSTLOAD и выполняется только в том случае, если FIRSTLOAD имеет значение true.Разместите ваш код, который «добавляет начальные значения [s] в базу данных SQLite» здесь.Затем установите для переменной FIRSTLOAD значение false.Таким образом, он будет выполнять код только один раз!

Boolean FIRSTLOAD= new Boolean("true");

void SetInitialValues()
{
   if(!FIRSTLOAD)
      return;

   // insert your code to run only when application is started first time here


   FIRSTLOAD = False;
}
1 голос
/ 22 мая 2017

Если вы используете библиотеку org.droidparts OR-Mapper для доступа к вашей базе данных, вы можете сделать это следующим образом.

В вашей реализации

public class CategoryEntityMgr extends EntityManager<Category> {
    public CategoryEntityMgr(Context ctx) {
        super(Category.class, ctx);
    }

    // NEW --> this one must be used in onCreateTables or you will receive a database locked exception
    private CategoryEntityMgr(Context ctx, SQLiteDatabase db) {
        super(Category.class, ctx, db);
    }
}

В вашей реализации AbstractDbOpenHelper:

protected void onCreateTables(SQLiteDatabase db) {
    // create your tables as usual
    createTables(db, Booking.class, Category.class);

    // Use a new instance of your entity manager
    //    but use the 2nd constructor to provide the db connection
    CategoryEntityMgr mgr = new CategoryEntityMgr(ctx, db);

    // add the new table row / entity you an to have
    Category c = new Category();
    c.name = "the value for this column";
    mgr.createOrUpdate(c);
}
0 голосов
/ 11 июля 2012

Вы должны проверять количество объектов в вашей базе данных каждый раз, когда вы впервые открываете базу данных в своем приложении.Не забывайте, что пользователь может освободить все данные.

    //Open DataBase
    MyDb.Open();

    //Get All List
    MyCursor = MyDb.getAllNames(); //You should have a function to get all the table data

    //First Time we open Database, add default Values
    if ( MyCursor.getCount() < 1 )
    {
        AddDefaultValuesToDataBase();
    }

Отсюда вы можете продолжить получать значения снова.

Надеюсь, это поможет, БР, Адриан.

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