Consultando e trabalhando com cursores no SQLite no Android
Não tenho certeza se sou o único que sente isso ...
Eu acho que trabalhar com o api sqlite no android uma dor completa na bunda e bela alma destruindo. Alguém tem alguma dicas / ajudantes para facilitar a minha vida?
Aqui está um exemplo do que estou falando.
//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)));
Isso é um simples exemplo da criação de um objeto de cliente simples a partir de uma consulta do banco de dados; alguns dos meus códigos são muito mais desagradáveis do que isso. A criação manual de consultas dessa maneira leva a todos os tipos de erros que não encontro até o tempo de execução.
Alguma dica muito apreciada!
Ok, depois das dicas abaixo eu agora tenho isso:
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);
no cliente, eu acesso os campos como este
mName = cursor.getString(2)
Ah, me sinto muito melhor :)
Cheers Si