2011-02-14 81 views
3

我已經用open()方法構建了一個數據庫輔助類,並且用onCreate()覆蓋了擴展的sqlite幫助器。 (如下所示)。儘管如此,我得到'SQLiteException,沒有這樣的表'的錯誤。我不明白,爲什麼openHelper沒有幫助?沒有這樣的表SQLite Android

public void open() { 
    try{ 
     db = openHelper.getWritableDatabase(); 
    } catch (SQLiteException e) { 
     db = openHelper.getReadableDatabase(); 
    } 
} 

//other stuff 

public static final String database_create = "create table " + database_table + " (" + primary_key + " integer primary key autoincrement, " 
    + company_column + " text not null, " + product_column + " text not null);"; 

    @Override 
    public void onCreate(SQLiteDatabase _db) { 
     _db.execSQL(database_create); 
    } 

下面的代碼是爲了臨時插入一個條目,因爲數據庫不能爲其他原因爲空。這似乎完美地執行,但代碼的最後位,其中來自後就是引發錯誤

CompanyAndProductDatabaseAdapter cpdAdapter = new CompanyAndProductDatabaseAdapter(this); 
    cpdAdapter.open(); 
    errorguard = cpdAdapter.insertPair("Loading", "..."); 
    cpdAdapter.close(); 

//other stuff 

cpdAdapter.open(); 
    Cursor cursor = cpdAdapter.getAllPairsCursor(); //error here 
    cursor.requery(); 
    startManagingCursor(cursor); 
+0

那怎樣?如果你解決了它。請告訴它。並考慮接受答案 – Beasly 2011-02-14 19:02:15

回答

2

我不知道爲什麼你實現了一個open - 方法,也database_create是不是應該是什麼。
我假設第一個代碼是CompanyAndProductDatabaseAdapter的一部分。

到這裏看看:
Android - Sqlite database method undefined fot type

這是幾乎所有你需要創建/獲得DB與inherted SQLiteOpenHelper

+0

感謝您的幫助。問題在於數據庫開放助手似乎不願意在同一個數據庫中創建兩個表。簡單地指定一個新的數據庫解決了一切我的創建語句雖然不正確?它現在似乎工作,但如果它可以變得更高效,我會喜歡它。 – reader1 2011-02-15 02:49:07

1

你的問題是這樣的功能:

db = openHelper.getWritableDatabase(); 
    db = openHelper.getReadableDatabase(); 

首先:檢查數據庫的您的路徑/名稱是正確的。如果沒有找到數據庫,它可以創建一個默認數據庫,一個空數據庫(沒有表,沒有)。

二:嘗試打開你的數據庫是這樣的:

String myPath = DB_PATH + DB_NAME; 
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); // or OPEN_READONLY, depending on situation.