上のSQLiteのカーソルない私はこれを感じているだけ...クエリとAndroid
だ場合、私はお尻でアンドロイド完全な痛みとかなりの魂破壊でのsqlite APIを扱う見つけることを確認して作業。誰かが私の人生を楽にするためのヒント/ヘルパーを持っていますか?
ここに私が話している事例があります。
//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)));
これは、dbクエリから単純な顧客オブジェクトを作成する簡単な例です。私のコードのいくつかはこれよりも厄介です。この方法で手作業でクエリを作成すると、実行時まで見つけることのできないすべてのエラーが発生します。
どのようなヒントも大いに喜ばれます!私は今、この持っている以下のヒントの後に[OK]を
:お客様で
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)
ああのようなフィールドにアクセス歓声 si
モバイルプラットフォームは、デスクトップオペレーティングシステムと同じ抽象化を提供しません。 –
ああ、 'getColumnIndexOrThrow'は私を殺しています...列名を直接取る' getString'オーバーロードを作成できませんでしたか? –