2013-05-14 37 views
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 

問題是什麼?如何解決它?

+0

全新安裝不會觸發onUpgrade,他們將運行的onCreate ,如果您在onUpgrade中做了任何更改,則需要將其包含在onCreate中,onCreate必須始終運行完整的數據庫最新結構,這意味着您應該在create table語句中聲明sorular字段。 – 2013-05-14 01:12:26

+0

我已經做了你所說的任何事情,但結果是一樣的。我已經將'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

回答

0

你應該改變你的onCreate到這一點,新柱說:從以前的SQL創建

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," + " zorluk INTEGER" + "cevap INTEGER);"); 
} 

表將在onUpgrade改變

+0

Uppss!我忘了將'zorluk'添加到我的列數組中。我剛剛認出它。對不起。我修復了它。非常感謝.. – 2013-05-14 12:47:14

相關問題