2013-08-07 4 views
0

와 _ID 활용하는 방법을 지금까지 나는이는 SimpleCursorAdapter

db = new MYDBHelper(this); 
    constantsCursor = db.getReadableDatabase().rawQuery(
      "SELECT _ID, title, value " + "FROM constants ORDER BY title", null); 
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, constantsCursor, new String[] { DBHelperMen2.TITLE, DBHelperMen2.VALUE }, new int[] {R.id.item_name, R.id.item_points }); 
listata = (ListView) findViewById(R.id.listView1); 
listata.setAdapter(adapter); 

을 가지고하지만 하나 개 더 필드 ITEM_NUMBER 이름이있다. 이 필드에 _ID 번호를 쓰고 싶습니다.

어떻게해야합니까? 여기

new SimpleCursorAdapter(this, R.layout.item, constantsCursor, new String[] { **???** ,MYDBHelper.TITLE, MYDBHelper.VALUE }, new int[] {**R.id.item_number** , R.id.item_name, R.id.item_points }); 

public class MYDBHelper extends SQLiteOpenHelper { 
    private static final String DATABASE_NAME = "db"; 
    static final String TITLE = "title"; 
    static final String VALUE = "value"; 

    public MYDBHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     db.execSQL("CREATE TABLE constants (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value TEXT);"); 
    } 



     @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS constants"); 
     onCreate(db); 
    } 
} 

답변

0

단순히 이렇게 MYDBHelper입니다 :

DBHelperMen2.ID에서 ID이 dB

이을의 열 이름입니다

ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, constantsCursor, new String[] { DBHelperMen2.ID, DBHelperMen2.TITLE, DBHelperMen2.VALUE }, new int[] {R.id.item_number, R.id.item_name, R.id.item_points }); 

코드는 작동해야합니다.

public class MYDBHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "db"; 

static final String TABLE_NAME = "constants"; 
static final String ID = "_id"; 

static final String TITLE = "title"; 
static final String VALUE = "value"; 

public MYDBHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    db.execSQL("CREATE TABLE "+ TABLE_NAME + "(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TITLE + " TEXT, " + VALUE + " TEXT);"); 
} 



    @Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
    onCreate(db); 
} 

}

+0

나는 그것은 같은 기본 키 선언 항상 좋은 생각 myDBHelper – Lukap

+0

에서 ID 필드가없는 : 어디'ID' 필드가 원하는됩니다 INTEGER PRIMARY KEY AUTOINCREMENT –

+0

_ID 를? "SELECT _ID, 제목, 값"을 쿼리하므로 _ID가 데이터베이스에 있습니다. –