0

1.

int mWordId = 65535;
String[] projection = {
    "wordId",
    "rank",
        };
String selection = "wordId MATCH ? ";
String[] selectionArgs = {Integer.toString(mWordId)};

Cursor c = pDatabase.query("words"
    ,projection
    ,selection
    ,selectionArgs
    ,null
    ,null
    ,"rank DESC");

c.moveToFirst();
int count= c.getCount();

2.

int mWordId = 65535;
String[] projection = {
    "wordId",
    "rank",
        };
String selection = "wordId =? ";
String[] selectionArgs = {Integer.toString(mWordId)};

Cursor c = pDatabase.query("words"
    ,projection
    ,selection
    ,selectionArgs
    ,null
    ,null
    ,"rank DESC");

c.moveToFirst();
int count= c.getCount();

3.

String query = "SELECT wordId,rank From words WHERE wordId=65535 ORDER BY rank DESC";
Cursor c = pDatabase.rawQuery(query,null);
c.moveToFirst();
int count= c.getCount();

1 では「match」を使用し、結果の数は 1 です
。2 では「=」を使用し、結果の数は 0 です
。3 では「=」と rawQuery() を使用します。結果の数は 1 です。

問題が見つかりません。

4

1 に答える 1

1

1 では、MATCH文字列でのみ機能するため、列のすべての値を文字列に変換し、wordId文字列を検索します'65535'

wordId2 では、列の値を string と比較しています'65536'

wordId3 では、列の値を数値と比較しています65536

パラメーター ( selectionArgs) は、数値ではなく、文字列に対してのみ使用する必要があります。

MATCHFTS テーブルで効率的に機能するクエリは、rowid/を使用した検索と検索だけであることに注意してくださいdocid。他のルックアップが必要な場合は、データベース スキーマが正しく設計されていません。

于 2013-06-06T06:31:00.587 に答える