Запросы и работа с курсорами в SQLite на Android

Не уверен, что я единственный, кто чувствует это ...

Я нахожу работу с API sqlite в Android полной болью в заднице и разрушением красивой души. Кто-нибудь получил какие-нибудь советы / помощники, чтобы сделать мою жизнь проще?

Вот пример того, о чем я говорю.

//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)));

Это простой пример создания простого объекта customer из запроса базы данных; часть моего кода намного более противна чем это. Таким образом, ручное создание запросов приводит ко всем видам ошибок, которые я не нахожу до времени выполнения.

Любые советы очень ценятся!

Хорошо, после подсказок ниже у меня теперь есть это:

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

в клиенте я получаю доступ к таким полям

mName = cursor.getString(2)

Ах, я чувствую себя намного лучше :)

ура си

Ответы на вопрос(2)

Ваш ответ на вопрос