problème de colonne _id SQLite Android
-
25-09-2019 - |
Question
Je suis un débutant dans Android, en travaillant sur les cartes de liste en ce moment. Je sais que certains types d'adaptateurs liste besoin colonne _id pour traiter les données. Je fournis une colonne _id mais je ne pouvais pas le faire fonctionner. Je suis par exemple le bloc-notes, donc voici mon code:
Je crée la db par cette déclaration:
private static final String DB_TABLE = "radios";
public static final String KEY_NAME = "name";
public static final String KEY_URL = "url";
public static final String KEY_ROWID = "_id";
static private String = DB_CREATE "Créer la table" + db_table + "( "+ KEY_ROWID +" entier autoincrement clé primaire", + Key_name + "texte non nul, "+ KEY_URL +" texte non nul);";
En utilisant une classe dbhelper:
private static class DBHelper extends SQLiteOpenHelper {
DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
onCreate(db);
}
}
Ici, je reçois tous les enregistrements db:
public Cursor getAllRadios() {
return db.query(DB_TABLE, new String[] {KEY_ROWID,KEY_NAME,KEY_URL}, null, null, null, null, null);
}
Et mon adaptateur:
String[] from = new String[] { DBAdapter.KEY_NAME };
int[] to = new int[] { R.id.text1 };
try{
SimpleCursorAdapter radios = new SimpleCursorAdapter(this, R.layout.list_item, cursor , from, to);
setListAdapter(radios);
}
catch(Exception e){
e.printStackTrace();
}
Je ne pourrais pas trouver des problèmes, mais je reçois toujours pas de colonne comme « _id » erreur . Toutes les idées?
La solution
Hmm, votre code SQL pour créer la table semble bien me (même si vous pouvez joindre vos noms de colonnes entre guillemets juste pour être sûr). Mais peut-être vous avez déjà une table ancienne existante qui n'est pas mis à jour? Juste pour être sûr:. DB_VERSION incrément et encore exécuter