Android 我能';我无法访问我随后添加的列。我该怎么办?
首先,我创建了一个表:Android 我能';我无法访问我随后添加的列。我该怎么办?,android,database,sqlite,Android,Database,Sqlite,首先,我创建了一个表: public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + "sorular" + " (_id INTEGER PRIMARY KEY AUTO_INCREMENT," + "soruIcerik TEXT," + " siklar1 TEXT," + " siklar2 TEXT," + " sikl
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");
}
}
我将数据添加到新列中,称为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
有什么问题?如何解决此问题?您应该将您的
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
中更改,新安装不会触发onUpgrade,它们将运行onCreate,如果您在onUpgrade中进行了任何更改,您也需要将其包含在onCreate中,onCreate必须始终运行数据库的完整最新结构,这意味着您应该在CREATETABLE语句中声明sorular字段。您所说的我都做了,但结果是一样的。我已将ALTER TABLE sorular添加列zorluk INTEGER
添加到onUpgrade,并已将CREATE TABLE sorular(_idinteger主键自动递增、soruIcerik TEXT、siklar1 TEXT、siklar2 TEXT、siklar3 TEXT、siklar4 TEXT、cevap INTEGER、zorluk INTEGER)添加到onCreate。他们在同一时间运行。乌普丝!我忘了在我的列数组中添加“zorluk”。我刚刚认出了它。我很抱歉。我已经修好了。谢谢。。