0

当我试图从我的数据库中获取信息到一个表中时,我收到了这个错误:

05-15 14:15:55.250: E/AndroidRuntime(28050): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Sofia.MemoryGame/com.Sofia.MemoryGame.SQLView}: android.database.sqlite.SQLiteException: no such column: KEY_ROWID: , while compiling: SELECT KEY_ROWID, KEY_Name, KEY_Score FROM ScoreList

这是我的代码:

    public String getData() {

    Cursor c = myDataBase.query(DATABASE_TABEL, new String[] {KEY_ROWID, KEY_Name, KEY_Score}, null, null, null, null, null);
    String result = "";

    int iRow = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_Name);
    int iScore = c.getColumnIndex(KEY_Score);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iScore) + "\n";
    }
    return result;
}

我在光标上遇到错误。谁能看到我做错了什么?

这里也是我创建表格的代码:

public static final String KEY_ROWID = "_id";
public static final String KEY_Name = "player_names";
public static final String KEY_Score = "player_score";

private static final String DATABASE_NAME = "HighScore";
private static final String DATABASE_TABEL = "ScoreList";
private static final int DATABASE_VERSION = 1;

private DbHelper myHelper;
private final Context myContext;
private SQLiteDatabase myDataBase;

private static class DbHelper extends SQLiteOpenHelper {

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //Skapar tabellen
        db.execSQL("CREATE TABLE " + DATABASE_TABEL + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_Name + "  TEXT NOT NULL, " +
                KEY_Score + " TEXT NOT NULL); "                 
        );
    }

谢谢。

4

1 回答 1

0

好吧,它抱怨您的表ScoreList中没有“KEY_ROWID”列

  1. 向我们展示您为变量 *KEY_ROWID* 定义的值
  2. 向我们展示您如何创建表ScoreList

仔细检查您为 KEY_ROWID const 设置的值(它是一个 const 变量,对吗?)与您在创建表时使用的列名匹配。

于 2012-05-15T13:44:40.737 回答