سؤال

أنا مبتدئ في Android ، أعمل على محولات القائمة الآن. أعرف أن نوعًا من محولات القائمة بحاجة إلى عمود _id لمعالجة البيانات. أقوم بتقديم عمود _id لكنني لم أستطع نجاحه. أتابع مثال المفكرة ، لذلك هنا هو الكود الخاص بي:

أقوم بإنشاء DB بهذا البيان:

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 Final String DB_Create = "إنشاء جدول" + db_table + "(" + key_rowid + "integer key inioincrement ،" + key_name + "text noth null ،" + key_url "text not null) ؛" ؛

باستخدام فئة 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);
    }
}

هنا أحصل على جميع السجلات في ديسيبل:

public Cursor getAllRadios() {
    return db.query(DB_TABLE, new String[] {KEY_ROWID,KEY_NAME,KEY_URL}, null, null, null, null, null);
}

ومحولي:

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();
    }

لم أتمكن من العثور على أي مشاكل ولكني ما زلت أحصل لا يوجد عمود مثل "_id" خطأ. أيه أفكار؟

هل كانت مفيدة؟

المحلول

حسنًا ، يبدو رمز SQL الخاص بك لإنشاء الجدول جيدًا بالنسبة لي (حتى لو كان بإمكانك إرفاق أسماء الأعمدة في عروض أسعار فقط للتأكد). ولكن ربما لديك بالفعل جدول قديم موجود لم يتم ترقيته؟ فقط للتأكد: الزيادة db_version وتنفيذ مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top