1

挿入する前にユーザーが Android sqlite データベースに存在するかどうかを判断するメソッドを構築しようとしています。このメソッドを構築して行数を返すようにしましたが、このような一致を検索しようとすると

    String[] columns = new String[] { SCREEN_NAME, NAME, PROFILE_IMAGE_URL,
            USER_ID };
    Cursor c = friendsDatabase.query(DATABASE_TABLE, columns, SCREEN_NAME
            + " LIKE '" + screenName + "%'", null, null, null, null);
    c.moveToFirst();
    Integer count= c.getCount();
    c.close();

    return count;

行数は問題なく返されますが、このような完全一致を探すとすぐに返されます

String[] columns = new String[] { SCREEN_NAME, NAME, PROFILE_IMAGE_URL,
            USER_ID };
    Cursor c = friendsDatabase.query(DATABASE_TABLE, columns, SCREEN_NAME
            + " = '" + screenName + "'", null, null, null, null);
    c.moveToFirst();
    Integer count= c.getCount();
    c.close();

    return count;

一致するかどうかに関係なく、毎回0行を取得します。SQLに問題があるかどうか、またはステートメントを作成するために間違った引数を使用している可能性があるかどうかはわかりません。

4

1 に答える 1

2

うまくいくかもしれないこのコードを試してください

生クエリの使用

Cursor mCount= db.rawQuery("select count(*) from "+ DATABASE_TABLE +" where "+SCREEN_NAME+"='" + SCREEN_NAME + "'", null);
mCount.moveToFirst();
int count= mCount.getInt(0);
mCount.close();

または、同じコードを異なる方法で使用する

db.query(DATABASE_TABLE , columns, SCREEN_NAME=?, new String[] { SCREEN_NAME}, null, null, null);
c.moveToFirst();
Integer count= c.getCount();
c.close();
于 2013-06-01T20:38:24.563 に答える