1
首先,我創建了一個表:我無法訪問我以後添加的列。我該怎麼辦?
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + "sorular"
+ " (_id INTEGER PRIMARY KEY AUTO_INCREMENT,"
+ "soruIcerik TEXT," + " siklar1 TEXT," + " siklar2 TEXT,"
+ " siklar3 TEXT," + "siklar4 TEXT," + "cevap INTEGER);");
}
,然後後我加入了DATAS
在此之後,我決定到一個新列添加到我的表,我寫了這個代碼:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(newVersion > oldVersion){
db.execSQL("ALTER TABLE sorular ADD COLUMN zorluk INTEGER");
}
}
我將數據添加到新列作爲manuel
但是當我想從新列訪問數據時,應用程序意外停止。代碼是這樣的:
String soruMetin = okunanlar.getString(okunanlar.getColumnIndex("soruIcerik"));//it's normal
String siklar1 = okunanlar.getString(okunanlar.getColumnIndex("siklar1")); //it's normal
String siklar2 = okunanlar.getString(okunanlar.getColumnIndex("siklar2")); //it's normal
String siklar3 = okunanlar.getString(okunanlar.getColumnIndex("siklar3")); //it's normal
String siklar4 = okunanlar.getString(okunanlar.getColumnIndex("siklar4")); //it's normal
int dogruCevap = okunanlar.getInt(okunanlar.getColumnIndex("cevap")); //it's normal
int zorluk = okunanlar.getInt(okunanlar.getColumnIndex("zorluk")); //it has problem
問題是什麼?如何解決它?
全新安裝不會觸發onUpgrade,他們將運行的onCreate ,如果您在onUpgrade中做了任何更改,則需要將其包含在onCreate中,onCreate必須始終運行完整的數據庫最新結構,這意味着您應該在create table語句中聲明sorular字段。 – 2013-05-14 01:12:26
我已經做了你所說的任何事情,但結果是一樣的。我已經將'ALTER TABLE sorular ADD COLUMN zorluk INTEGER'添加到onUpgrade,並且已經完成了'CREATE TABLE sorular(_id INTEGER PRIMARY KEY AUTO_INCREMENT,soruIcerik TEXT,siklar1 TEXT,siklar2 TEXT,siklar3 TEXT,siklar4 TEXT,cevap INTEGER,zorluk INTEGER )'onCreate。他們在同一時間運行。 – 2013-05-14 01:28:27