2012-05-15 54 views
0

当我试图从我的数据库中的信息到一个表,我得到这个错误:错误上的光标从数据库SQLite的选择时,

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

我收到光标上的错误。任何人都可以看到我做错了什么?

在这里,我也是我创建TABEL代码:

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

感谢。

+0

请加上数据库结构。 – Ivan

回答

0

那么它的抱怨,不必列“KEY_ROWID”在表中得分列表

  1. 告诉我们,您为变量定义的值* KEY_ROWID *
  2. 显示我们你如何创建表得分列表

仔细检查你的KEY_ROWID常量(它是一个const变量,对不对?)设置的值你的U列名相匹配sed创建表时。

+0

那么,我确实有一个名为KEY_ROWID的列。所以,我不知道为什么它会抱怨。 –

+0

非常奇怪。出于某种原因,它似乎将KEY_ROWID的值解析为“KEY_ROWID”而不是“_id”。在执行查询时尝试对列名进行硬编码,看看是否有效,然后我们可以找出解决方案。 (例如myDataBase.query(DATABASE_TABEL,new String [] {“_id”,“player_names”,...)。 – Gophermofur

+0

另外,getData()方法与DBHelper在同一个类中吗?如果没有,是否有机会你有在多个地方定义的那些常量(KEY_ROWID ...) – Gophermofur

相关问题