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);");
}

然后我添加了数据

之后,我决定在我的表中添加一个新列,并编写了以下代码:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if(newVersion > oldVersion){
          db.execSQL("ALTER TABLE sorular ADD COLUMN zorluk INTEGER");
        }
    }

我将数据作为手册添加到新列

但是当我想从新列访问数据时,应用程序意外停止。代码是这样的:

 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

问题是什么?如何解决?

4

1 回答 1

0

您应该将您的更改onCreate为此,并添加新列:

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);");
}

从以前的 sql 创建的表将在onUpgrade

于 2013-05-14T02:09:29.200 回答