2010-12-21 315 views
0

我正在使用Sqlite與android開發和應用程序,它可以在未來定製(爲開發)。我用數據創建了一個數據庫,然後用它爲應用程序創建數據庫。因此,如果將來需要做出任何更改,或者我將來爲其他人編寫應用程序,那麼我所要做的就是更改此原始數據庫。這背後的想法是開發者的數據庫將設置所有的用戶界面和一切與應用程序。數據庫創建數據庫

我被困在接下來做什麼我有我需要在應用程序中的數據庫作爲開發人員完全填充。我的想法是創建另一個DBHelper類,並在該引用內引用新DB類中的原始DBHelper類和查詢。所以這是我想要從以前的數據庫中創建一個數據庫中的第二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+");"); 
     } 
    } 

但我有一種感覺,這是不是要什麼,我需要做的方式。任何幫助將不勝感激。

+0

我不知道我是否理解一切正確。你有一個你讀的數據庫設置用戶界面和東西?如果是,爲什麼?從來沒有聽說有人使用數據庫來定製應用程序......第二個問題:問題是什麼?你想知道如何同時打開2個數據庫?我有點丟了你的問題... – WarrenFaith 2010-12-21 10:40:54

+0

是的,原始數據庫是用來設置數據庫的應用程序,它將存儲應用程序的數據,這又取決於要存儲的數據將顯示一個不同的UI視圖的類型。問題是我在完全錯誤的方式?這是一個應用程序,可以用於許多不同的應用程序多次,但我只想要一個地方,這是爲應用程序更改,在我的例子中它是第一個配置數據庫。 – SamRowley 2010-12-21 10:44:12

回答

1

我認爲你做錯了,並且很複雜。你提供一個數據庫來讀取數據,你可以輕鬆地創建一些插入,並且你的配置將被實現。

兩個解決方案:

  1. 從我自己的項目:DatabaseAdapter.onCreate()

    在那裏,你會看到數據庫設置,並與數據的數據庫的填充。數據本身添加了包含基於常量的數據的簡單插入。所以程序員可以通過改變常量來輕鬆改變數據。

    由於您不必處理2個數據庫,您不需要提供另一個數據庫並讀取它們。

  2. 由於android支持數據庫位置,您也可以跳過這一切,只需打開您在res/raw或資源文件夾或sdcard上任何位置提供的sqlite數據庫文件即可。

我推薦做上述兩種方法之一。