我正在编写一个Android应用程序。
这是我的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);
}
}
在其他课程中,我试图使用simplecursoradapter来显示控制数据库的信息:
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数据库,则此列完全在此数据库中创建。
有什么想法吗?
答案 0 :(得分:0)
我担心,你的光标从obtenerControles()方法获取结果集,而没有_id字段。也就是说,你可能在查询时没有从你的表中获取_id。
发布obtenerControles(entryTypeId)的代码或自行检查以确保它将_id提取到结果集中。