2012-05-15 75 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

相關問題