0

私はアンドロイドアプリをプログラミングしています。

これは私の BDHelper クラスです:

public class BD_Helper extends SQLiteOpenHelper{

private static final String BD_NOMBRE = "BD_PAED.db";
private static final int BD_VERSION = 1;
private static final String TABLA_AUDIT_NOMBRE = "audit";
private static final String TABLA_CONTROLES_NOMBRE = "controles";

private static final String crearAudit = 
                                "CREATE TABLE " + TABLA_AUDIT_NOMBRE + " (" +
                                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                "usuario TEXT, " +
                                "clave TEXT, " +
                                "userid INTEGER, " +
                                "pin TEXT, " +
                                "tema TEXT, " +
                                "colorFondo TEXT, " +
                                "color TEXT, " +
                                "colorFuente TEXT)";

private static final String crearControles = 
                                "CREATE TABLE " + TABLA_CONTROLES_NOMBRE + " (" +
                                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                "entryTypeId TEXT, " +
                                "statusTypeId TEXT, " +
                                "momentTypeId TEXT, " +
                                "activityTypeId TEXT, " +
                                "activityDuration TEXT, " +
                                "activityTypeOthers TEXT, " +
                                "intensityTypeId TEXT, " +
                                "measurementTime TEXT, " +
                                "glucosePre TEXT, " +
                                "CHRations TEXT, " +
                                "rapidInsulin TEXT, " +
                                "slowInsulin TEXT, " +
                                "glucosePost TEXT);";

public BD_Helper(Context context){
    super(context, BD_NOMBRE, null, BD_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {       
    db.execSQL(crearAudit);
    db.execSQL(crearControles);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table if exists "+ TABLA_AUDIT_NOMBRE);
    db.execSQL("drop table if exists "+ TABLA_CONTROLES_NOMBRE);
    onCreate(db);
}

}

他のクラスでは、simplecursadapter を使用してコントロール データベースの情報を表示しようとしています。

private void cargaDatos(){
    String[] from;

    cursor = bdHelper.obtenerControles(entryTypeId);
    startManagingCursor(cursor);

        from = new String[] {BD_ControlesAdapter.CAMPO_MEASUREMENTTIME,BD_ControlesAdapter.CAMPO_ACTIVITYTYPEID};

    int[] to = new int[]{R.id.fila_fecha,R.id.fila_tipo};


    SimpleCursorAdapter controles = new SimpleCursorAdapter(this,R.layout.fila_controles,cursor,from,to,0);
    setListAdapter(controles);

}

しかし、これはうまくいきませんnew SimpleCursorAdapter

IllegalArgumentException: column '_id' does not exist.

sqlite データベースを確認すると、この列はこのデータベースに完全に作成されています。

何か案が?

4

1 に答える 1

0

残念ながら、カーソルは obtenerControles() メソッドから結果セットを取得しますが、_id フィールドが含まれていません。つまり、クエリ中にテーブルから _id を取得していない可能性があります。

obtenerControles(entryTypeId) のコードを投稿するか、自分で確認してください。_id が結果セットにフェッチされます。

于 2012-08-08T12:30:13.427 に答える