Abfragen und Arbeiten mit Cursorn in SQLite unter Android

Ich bin mir nicht sicher, ob ich der einzige bin, der das fühlt ...

Ich finde die Arbeit mit dem SQLite-API in Android ein totaler Schmerz im Hintern und die Zerstörung der hübschen Seele. Hat jemand Tipps / Helfer, die mir das Leben erleichtern?

Hier ist ein Beispiel dafür, wovon ich spreche.

//create code

db.execSQL("CREATE TABLE " + CUSTOMER_TABLE_NAME + " ("
                        + GENERIC_ID_KEY+ " INTEGER PRIMARY KEY NOT NULL, " 
                        + PHONE_KEY + " INTEGER NOT NULL, "
                        + CUSTOMER_NAME_KEY+ " TEXT NOT NULL, "
                        + EMAIL_KEY + " TEXT NOT NULL, "
                        + ADDRESS_KEY +" TEXT);");


//get code
    Cursor mCursor = mDb.query(true, CUSTOMER_TABLE_NAME, new String[] {GENERIC_ID_KEY,
                        ADDRESS_KEY, PHONE_KEY, EMAIL_KEY,CUSTOMER_NAME_KEY}, GENERIC_ID_KEY + "=" + customerDbId, null,
                                null, null, null, null);

        Customer customer = new Customer (customerDbId, (CharSequence)mCursor.getString(mCursor.getColumnIndexOrThrow(CUSTOMER_NAME_KEY)),
                            (CharSequence)mCursor.getString(mCursor.getColumnIndexOrThrow(PHONE_KEY)),
                            (CharSequence)mCursor.getString(mCursor.getColumnIndexOrThrow(EMAIL_KEY)),
                            (CharSequence)mCursor.getString(mCursor.getColumnIndexOrThrow(ADDRESS_KEY)));

Dies ist ein einfaches Beispiel für das Erstellen eines einfachen Kundenobjekts aus einer Datenbankabfrage. Einige meiner Codes sind weitaus unangenehmer. Das Handwerken von Abfragen auf diese Weise führt zu allen möglichen Fehlern, die ich erst zur Laufzeit finde.

Alle Tipps sehr geschätzt!

Ok, nach den folgenden Tipps habe ich jetzt Folgendes:

  db.execSQL("CREATE TABLE customer (_id INTEGER PRIMARY KEY NOT NULL, " 
                        + "phone_number INTEGER NOT NULL, "
                        + "name TEXT NOT NULL, "
                        + "email TEXT NOT NULL, "
                        + "address TEXT);");


    //get code
String q = "SELECT * FROM customer WHERE _id = " + customerDbId +";"
        Cursor mCursor = mDb.rawQuery(q, null);

        Customer customer = new Customer (mCursor);

im Kunden greife ich so auf die Felder zu

mName = cursor.getString(2)

Ahh, ich fühle mich viel besser :)

Prost Si

Antworten auf die Frage(2)

Ihre Antwort auf die Frage