0

ユーザーの要求に応じて、DBに新しいテーブルを動的に作成する方法を見つけようとしています。私の現在のDBクラスは次のコードで動作します。新しいテーブルを動的に作成できるようにこれを変更する方法を理解しようとしています。私のアイデアの1つは、このコードを使用して、最初にonCreateを使用して、将来のテーブルの名前を保持するテーブルを作成することでした。そこから、ユーザーが新しいテーブルを入力すると、そのテーブルをテーブル名を保持する現在のテーブルに追加し、そこからそれを選択して、その特定の名前で実際にテーブルを作成するために使用します。それが実際に機能するかどうかはわかりませんが、それは私がちょうど考えたものであり、皆さんがどう思うかを見たかったのです。

private static class DbHelper extends SQLiteOpenHelper{

    /* Constructor */
    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + 
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                KEY_FRONT + " TEXT NOT NULL, " + 
                KEY_BACK + " TEXT NOT NULL);"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2){
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}
4

1 に答える 1

1

特にあなたのアイデアに賛成かどうかはわかりません。基本的に最初にSQLite文字列を作成しようとしているという基盤を持つことが最善だと思います。最終的なテーブル作成の前にも、いくつかの中間データホルダーを用意することが重要です。

個人的には、フォームを作成し、フォーム上のObjectすべて(テーブル名、列番号など)を読み取って、必要な1つの文字列を出力できるフォームを作成します。その後、必要に応じて、全体Stringをに、SharedPrefsまたは任意の方法で保存できSQLiteます。

于 2013-01-10T16:04:59.820 に答える