我正在使用SQLite数据库,我得到了这个错误:
引起:android.database.sqlite.SQLiteException:没有这样的列:coin(代码1):,同时编译:SELECT _id,name,age,coin,log FROM person_tb1 WHERE name =?
我不知道为什么它告诉我这个!
我在它工作正常之前尝试过它!
这是我的代码:
public ArrayList<Person> getPersons (){
persons.clear();
SQLiteDatabase dba = this.getReadableDatabase();
Cursor cursor = dba.query(Constants.TABLE_NAME,
new String[]{Constants.KEY_ID, Constants.NAME, Constants.AGE , Constants.COIN , Constants.LOG},null,null,null,null,null);
if(cursor.moveToFirst()){
do {
Person p = new Person();
p.setName(cursor.getString(cursor.getColumnIndex(Constants.NAME)));
p.setAge(cursor.getInt(cursor.getColumnIndex(Constants.AGE)));
p.setCoin(cursor.getInt(cursor.getColumnIndex(Constants.COIN)));
p.setLog(cursor.getInt(cursor.getColumnIndex(Constants.LOG)));
p.setPersonId(cursor.getInt(cursor.getColumnIndex(Constants.KEY_ID)));
persons.add(p);
}while (cursor.moveToNext());
cursor.close();
dba.close();
}
return persons;
}
这里是select方法:
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE " + Constants.TABLE_NAME + "(" +
Constants.KEY_ID + " INTEGER PRIMARY KEY, " + Constants.NAME + " TEXT, "+
Constants.AGE + " INT, " + Constants.COIN + " INT, " + Constants.LOG + " INT);";
db.execSQL(CREATE_TABLE);
}
//编辑:( OnUpgrade)
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + Constants.TABLE_NAME);
onCreate(db);
}
答案 0 :(得分:3)
狂野猜测:您在运行应用后添加了列
如果是这样(i have tried it before its working fine !
),只需取消暂停并重新安装您的应用。
或者您可以简单地增加DATABASE_VERSION常量。
<强> [编辑] 强>
但是第二种方法不起作用,因为您当前的onUpgrade()
方法错误。
db.execSQL("DROP TABLE IF EXISTS" + Constants.TABLE_NAME);
不会删除表格。因此,它甚至不会被重新创造 您需要在表名前插入空格:
db.execSQL("DROP TABLE IF EXISTS " + Constants.TABLE_NAME);