0

sql database文字列全体としての整数で構成される列で構成されてContact_Priorityいます(つまり、1,2 ...が文字列として保存されます)。Contact_Priority複数の数字を含む場合があります。次のクエリを使用して、特定の数を含む行数を取得しています。

SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
        Cursor cursor = sqLiteDatabase.query(CONTACT_TABLE, null, Contact_Priority + " =? ", new String[]{priority} , null, null, null);
        
        int count = cursor.getCount();

データベースにはいくつかの行が存在しますが、0 を返しています。

私が入れたらCursor cursor1 = sqLiteDatabase.query(CONTACT_TABLE, null, null, null, null, null, null, null);

正しい行数を取得しています。なぜそれが機能しないのか、私はとても混乱しています。

PS -行Contact_Prioritypriorityある、つまりタイプミスがない。 ここに画像の説明を入力

同じ優先度を持つ行の数を知りたいだけです。

アップデート :-

それが役立つかどうかはわかりませんが、私が作成しているアプリは、特定のContact_Priority. 私がやったことは、特定の連絡先、Contact_Priorityつまり1、2などに連絡先を追加すると、ボタンをクリックしてすべての優先度に追加できる、つまり優先度1から8には、画像でわかるように同じ連絡先がありますその上。

これは正常に実装されました。現在、優先度の連絡先を表示しているときに問題が発生していますが、奇妙なことに、特定の優先度で機能しているため、同様の連絡先をすべて設定しています。

優先度「2」のすべての連絡先を保持することを選択すると、「2」の正しい出力、つまり正しい行数が得られますが、他のすべての連絡先は 0 になります。データベースが更新され、行が更新されていることを確認しましたしかし、なぜ私が理解できない優先度が1つだけの出力を取得しているのか。

更新 2

の値は、クエリ関数が呼び出されるボタンを含むpriorityの位置によって異なります。例えば。の連絡先を他のすべての人にコピーしたとします。上の画像のように、データベースが更新されます。ボタンをクリックすると優先度がになり、2 番目の子のボタンをクリックすると優先度が続きます。奇妙な理由で、作業優先度は「2」です(「2」の連絡先をすべてにコピーしたため)。他の人にとっては機能していません。listviewonClickpriority 2listview child 112

「優先度3」の連絡先をコピーした場合、優先度が「3」の場合にのみ機能し(つまり、リストの3番目のボタンをクリックした場合)、他の人には機能しません。

私は自分自身を明確にしたと思います。混乱させて申し訳ありませんが、このような奇妙な問題を見たことがないので、私自身が混乱しています。

4

5 に答える 5

0

こちらをご覧ください: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html Contact_Priority 変数の意図は何ですか? そして、なぜ " =? " この文字列を使用するのですか?

使用しているメソッドの定義は次のとおりです。

query(文字列テーブル、文字列[]列、文字列選択、文字列[]選択引数、文字列groupBy、文字列有、文字列orderBy、文字列制限)

次のようにする必要があります: CONTACT_TABLE, null, Contact_Priority, new String[]{priority} , null, null, null, null

于 2013-11-04T14:45:38.967 に答える
0

これも試すことができます

String.format(Contact_Property + " = \'%s\'", priority);

そして、selectionArgs 引数を null に設定します。

于 2013-11-04T14:48:18.520 に答える
0
 .query(CONTACT_TABLE, null, Contact_Priority + " =? ", new String[]{priority} , null, null, null);

Contact_Priorityは、( の変数であることを願っています"Contact_Priority") が与えられたものと完全に等しいすべての行を返しますpriority

正確ではなく、一致が必要なので、次のようにします。

 .query(CONTACT_TABLE, null, "','||Contact_Priority||',' LIKE '%,'||?||',%'", new String[]{priority} , null, null, null);

しましょう!

編集:ワイルドカード文字を忘れました...

于 2013-11-04T14:45:55.220 に答える