2011-11-08 76 views
0

我有一些奇怪的行爲。 如果數據庫中不存在的,我在我的活動執行以下代碼:數據庫已存在時創建新表的問題

listOpenHelper = new ListOpenHelper(ManageListActivity.this); 
db = listOpenHelper.getReadableDatabase(); 
Cursor cursor = db.query(ListOpenHelper.TABLE_NAME, null, null, null, null, null, BaseColumns._ID + " DESC"); 

該數據庫在這裏創建並創建表列表,沒有問題。

問題是,當我嘗試在其他活動來執行一個類似的塊:

productListOpenHelper = new ProductListOpenHelper(ProductListActivity.this); 
db = productListOpenHelper.getReadableDatabase(); 
Cursor cursor = db.query(ProductListOpenHelper.TABLE_NAME, null, null, null, null, null, ProductListOpenHelper.NAME + " ASC"); 

在這種情況下,我得到的例外「android.database.sqlite.SQLiteException:沒有這樣的表:表:,同時編譯:SELECT * FROM list ORDER BY _id DESC「

如果我刪除數據庫並執行第一個上述塊,並在第一個塊之後,錯誤將在productlist表中。

我需要在第一次執行中創建所有我的表? 我喜歡在用戶輸入每個活動時創建表格,有一些很好的方法可以做到這一點?

謝謝!

+0

每次用戶打開另一個活動時,爲什麼要刪除並重新創建表格?數據庫的全部目的是......存儲數據。 – Jack

+0

我沒有刪除並重新創建,我創建了一次,問題是當我嘗試在現有數據庫中創建另一個表時。 –

回答

0

你有兩個不同的數據庫,對嗎?如果沒有,你可能不應該有兩個不同的助手類。

此外,創建助手,因爲你是可能不理想。見博客文章:

http://www.touchlab.co/blog/single-sqlite-connection/

請張貼代碼爲您的輔助類,爲什麼你有兩個不同的班級。

+0

謝謝凱文!我只有一個數據庫,我會閱讀你發佈的這個網站,以瞭解如何創建數據庫的更好,如果我有一些問題,我從我的助手的這裏發佈代碼。 –

0

爲什麼你使用兩個不同的助手?我不認爲它是一個好方法...你可以在最初創建表,並且你可以隨時獲得數據庫,只需一個幫助器。