2013-03-13 2 views
0

SQLlite 데이터베이스에 값을 입력하고 gridview에서 값을 검색하고 있습니다. "column__id '오류가 발생합니다. 그러나, _id라는 컬럼을 사용하지 않았습니다. 데이터 베이스. 어떻게 작동시킬 수 있습니까 ?? 나는 SimpleCursor Adapter에 문제가 있다고 생각한다.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

(SimpleCursorAdapter는 확장) CursorAdapter에 대한 문서 상태 : 그것은 바보 같은 소리지만 나는 안드로이드에 새로운 오전

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

미안, 난 내 데이터베이스에 _id라는 이름의 열을 포함해야합니까? –

+0

지금이 작업을 수행했습니다. 커서 c = db1.rawQuery ("SELECT ID as _id, NAME, age FROM stu", null); 하지만 다른 오류가 나타납니다. 어떻게해야합니까 ?? –

+0

예, 테이블의 스키마에는 _id라는 열이 있어야합니다. 변경 db1.execSQL ("ID가 존재하지 않는 경우 테이블을 만듭니다 (ID를 정수 기본 키, 이름 VARCHAR foriegn 키, 나이 VARCHAR);"); ~ db1.execSQL ("CREATE TABLE이 존재하지 않으면 stu (_id INTEGER 기본 키, NAME VARCHAR foriegn 키, age VARCHAR);"); – NPike

관련 문제