База данных для создания базы данных - PullRequest
0 голосов
/ 21 декабря 2010

Я использую Sqlite с android для разработки и приложения, которое можно настроить (для разработчика) в будущем. Я создал базу данных с данными, которые затем будут использоваться для создания базы данных для приложения. Поэтому, если в будущем необходимо будет внести какие-либо изменения или я напишу приложение для кого-то другого в будущем, все, что мне нужно сделать, это изменить эту исходную базу данных. Идея заключается в том, что база данных разработчика настроит весь пользовательский интерфейс и все, что связано с приложением.

Я застрял в том, что делать дальше. У меня есть база данных, которая мне нужна в приложении, поскольку разработчик полностью заполнен. Моя идея состояла в том, чтобы создать еще один класс DBHelper и в рамках этой ссылки исходный класс DBHelper и запрос в новом классе DB. Итак, это второй класс DBHelper, который я пытаюсь создать из предыдущей базы данных:

public class appDbHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "library.db"; //database name   
    Cursor all, tables, options, ui_type;
    SQLiteDatabase database;

    public appDbHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        DBHandler databaseHelper = new DBHandler(context);
        database = databaseHelper.getReadableDatabase();
        all = database.rawQuery("SELECT * FROM config", null);
        tables = database.rawQuery("SELECT * FROM table_names", null);
        options = database.rawQuery("SELECT * FROM options", null);
        ui_type = database.rawQuery("SELECT * FROM ui_type", null);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        for(int i=0; i<tables.getCount(); i++){
            tables.moveToPosition(i+1);
            String sql = "";
            for(int j = 0; i < all.getCount(); j++){
                if (all.moveToFirst()) {
                    do{
                        sql = ", " + all.getString(2) + " " + all.getString(5).toUpperCase();
                    }
                    while (all.moveToNext());
                }
            } 
            Log.v("DatabaseSQL", sql);
            database.execSQL( "CREATE TABLE " + tables.getString(1) + "(_id INTEGER PRIMARY KEY AUTOINCREMENT"+sql+");");
        }
    }

Но я чувствую, что это не тот путь, который мне нужен. Любая помощь будет оценена.

1 Ответ

1 голос
/ 21 декабря 2010

Я думаю, что вы делаете это неправильно и сложно. Вы предоставляете базу данных для чтения данных, откуда вы можете легко создать несколько вставок, и ваша конфигурация будет реализована.

Два решения:

  1. Из моего собственного проекта: DatabaseAdapter.onCreate ()

    Там вы должны увидеть настройку базы данных и заполнение базы данных данными. Сами данные добавляются с помощью простых вставок, которые содержат данные на основе констант. Таким образом, программист может легко изменить данные, изменив константы.

    Поскольку вам не нужно обрабатывать 2 базы данных, вам не нужно предоставлять другую базу данных и читать их.

  2. Поскольку android поддерживает расположения баз данных, вы также можете пропустить все это и просто открыть файл базы данных sqlite, который вы предоставляете, в папке res / raw или asset или в любом месте на SD-карте.

Я рекомендую сделать один из двух упомянутых выше способов.

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