2011-02-14 92 views
2

我使用我自己的SQLite3數據庫,而不是每次運行我的應用程序時都創建一個新數據庫,因爲我有幾張表,其中包含靜態數據,我嘗試顯示。我創建了我的數據庫並將其放置在我的資產文件夾中。然後,我建立了我的數據庫幫助,當我開始我的應用程序,我可以毫無問題地打開我的數據庫,但是當我嘗試使用下面的代碼SQLiteException:沒有這樣的表

private Cursor getData() 
{ 
    try 
    { 
     myDbHelper = new DatabaseHelper(this); 
     SQLiteDatabase db = myDbHelper.getReadableDatabase(); 
     Cursor cursor = db.query("exhibitor", FROM, null, null, null,null, ORDER_BY); 
     startManagingCursor(cursor); 
     return cursor; 
    } 
    catch(SQLiteException e) 
    { 
     String err = e.toString(); 
     return null; 
    } 
} 


它拋出一個錯誤說android.database.sqlite.SQLiteException: no such table: exhibitor: , while compiling: SELECT _id, EXHIBITOR FROM exhibitor ORDER BY EXHIBITOR打開我的第一個表,但是當我檢查數據庫參展商在那裏。

我錯過了什麼?

回答

4

您是否已將數據庫從資產文件夾移動到模擬器上的/data/data/YOUR_PACKAGE/databases/

This is a good detailed post關於將數據庫移動到/data/data/YOUR_PACKAGE/databases/(如果不存在)。

Here是另一個簡短而簡單的解決方案。

+0

感謝您的回覆,我將第一個鏈接作爲我的DatabaseHelper類的基礎,但我會嘗試第二個鏈接來查看是否可以解決問題。 – user616076 2011-02-14 12:36:21

+0

第二個鏈接已經解決了這個問題,但我會接受建議並在啓動時創建表並首次填充表以防止Apk太大。謝謝你的幫助。 – user616076 2011-02-14 12:49:45

1

使用SQLiteOpenHelper.onCreate()不會在您每次啓動應用程序時創建新的數據庫 - 而是會創建一個數據庫(如果它尚不存在)。

這聽起來像你可能有一個由你的助手創建的空數據庫(如果根本沒有數據庫,我可能期望有一個不同的例外)以及你在Android之外創建的獨立數據庫。看起來你和你的應用程序不在同一個地方查看你的數據。

11

設置 - >應用程序 - >管理應用程序 - >(點擊您的應用程序) - 當你在現有的數據庫中創建新表的表犯規創建>清除數據

6

因爲數據庫處理程序的OnCreate功能將不每次都要調用,但只有在需要時(比如數據庫未啓動)。如果情況並非如此,那麼您新創建的表格實際上並未創建。清除數據以強制數據庫實例化自己。

0

hapend給我一次 更改DATABASE_VERSION

如果您DATABASE_VERSION = 1它會看到只有三個表 如果您DATABASE_VERSION = 2,將看到的只是更多的表,但我真的不知道有多少

好運

0

清除數據,並從您的設備和設備重新安裝應用程序卸載應用程序...

Settings -> Applications -> Manage Applications -> Your Application Name -> Clear data