2011-04-30 82 views
0

我在這裏問了一些關於SQLite的問題,也許是因爲我沒有完全理解它是如何工作的。我正在閱讀兩本正在使用教程和示例的書籍,但我很難搞清楚我將如何執行此操作。Android SQLite問題

我現在所做的是用戶創建一個列表,他們點擊一個加號按鈕,輸入一個列名,列表視圖顯示他們創建的列表(列表視圖插入到ArrayList中)。我想獲取該ArrayList並使用這些字符串來創建表列。

現在,我正在使用的示例正在創建擴展SQLiteOpenHelper的類以及擴展Activity並顯示佈局和數據的另一個類。

我的問題是:

  1. 什麼叫擴展了SQLiteOpenHelper創建數據庫類?這是從啓動應用程序自動運行?還是我在我的活動中稱它?

  2. 我打算在FOR循環中用ArrayList構建一個長字符串,這樣我就可以爲其列創建CREATE TABLE字符串。我將如何把ArrayList的SQLite類?我正在考慮使用捆綁的Intent,但我不確定這是否會起作用(或者它會如何?)。

+0

問:我能不能創建一個數據庫,並創建數據庫表中的常規活動? – 2011-04-30 02:36:22

回答

2
  1. 實施SQLiteOpenHelper 「規定」 主要有兩種方法供您覆蓋:的onCreate和onUpgrade。 onCreate將在您第一次創建助手實例時自動調用,並且只有在數據庫尚不存在的情況下才會自動調用。它位於執行創建語句的onCreate中。

    然後,您可以使用此幫助程序對象來獲取數據庫的實例,該實例可以是可讀的或可寫的,具體取決於您需要的內容:​​和getReadableDatabase。這些方法返回一個可以執行查詢的數據庫對象。

  2. 從這裏,您可以將幫助程序包裝在超類中,或者只需將您的查詢/插入/刪除/更新方法添加到幫助程序。這些將採取一個可讀或可寫的實例,並且,例如,插入你想要添加的任何列表。 Intents在這裏沒有必要,你將直接得到Helper/Wrapper實例並在那裏執行你的操作。

    class DatabaseHelper extends SQLiteOpenHelper { 
        List columns; 
        public AccountsDatabaseHelper(Context context, List columns) { 
         super(context, DATABASE_NAME, null, DATABASE_VERSION); 
         this.columns = columns; 
        } 
    
        ... 
    } 
    

    代碼的活動: -

編輯如何在ArrayList中您SQLiteOpenHelper通過

... 
    DatabaseHelper helper = new DatabaseHelper(this, myArrayList); 
    helper.getWriteableDatabase(); //This will execute the onCreate 
    ...  
+0

對於#2,我不確定是否正確表達了我的問題...... ArrayList包含表列的名稱。因此,當用戶點擊GO時,應用程序將通過Array LIst並使用其字符串創建表格列。 – 2011-04-30 03:48:20

+0

這是用戶要做的第一件事情嗎?您可以將該ArrayList作爲參數傳遞給SQLiteOpenHelper的構造函數,並將其存儲在實例變量中並在onCreate中使用它。 – dmon 2011-04-30 04:38:39

+0

@dmon:是的,用戶在繼續創建SQL表之前先填充ArrayList。現在我只是發現了這一點,但沒有經過測試。我可以在活動類中編寫完整的SQL類嗎? – 2011-04-30 04:43:35