2013-03-13 64 views
0

我輸入一些值到我的SQLlite數據庫,然後檢索它們在gridview.I得到一個錯誤「column'_id」「不存在。但我沒有使用任何_id命名列在數據庫。我怎樣才能使它工作?我認爲SimpleCursor適配器存在一些問題。無法在Android的Gridview中顯示數據!請幫我出

GridView gv = (GridView)findViewById(R.id.gridView1); 

    try 
    { 
     db1 = openOrCreateDatabase("record.db", Context.MODE_PRIVATE,null); 
      db1.execSQL("CREATE TABLE IF NOT EXISTS stu(ID INTEGER primary Key,NAME VARCHAR foriegn key,age VARCHAR);"); 
     db1.execSQL("INSERT INTO stu VALUES (1,'mona','123');"); 

    Cursor c = db1.rawQuery("SELECT * FROM stu", null); 
    if(c!= null){ 
    if (c.moveToFirst()) { 
      do { 
       String[] cols = new String[]{c.getString(c.getColumnIndex("ID")),c.getString(c.getColumnIndex("NAME"))}; 
      int[] views = new int[] {R.id.textView1,R.id.textView2}; 

       SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
         android.R.layout.simple_list_item_1, 
         c, cols, views); 
        gv.setAdapter(adapter); 

       }while(c.moveToNext());} 

    }} catch(Exception e){ 
     Toast.makeText(getBaseContext(),"errord"+ e.getMessage(), Toast.LENGTH_LONG).show(); 
        } 
} 

回答

0

CursorAdapter的文檔(這SimpleCursorAdapter擴展)規定:如果

The Cursor must include a column named "_id" or this class will not work. 
+0

對不起這聽起來很傻,但我是新到Android,確實我必須包括在我的數據庫名爲_id列? – 2013-03-13 17:10:41

+0

我已經完成了這個 Cursor c = db1.rawQuery(「SELECT ID as _id,NAME,age FROM stu」,null); 但彈出另一個錯誤..如何做到這一點? – 2013-03-14 10:09:40

+0

是的,您的表格架構必須包含標有_id的列。更改db1.execSQL(「CREATE TABLE IF NOT EXISTS stu(ID INTEGER primary key,NAME VARCHAR foriegn key,age VARCHAR);」);到 db1.execSQL(「CREATE TABLE IF NOT EXISTS stu(_id INTEGER primary key,NAME VARCHAR foriegn key,age VARCHAR);」); – NPike 2013-03-15 21:22:19