0

データベースから最初の 5 語を取得し、それらをボタンのテキストとして設定しようとしています。これが私のコードです。

String [] deal;
 String text,s1,s2,s3,s4,s5;
 text=edt.getText().toString();
         deal=db.getAllItemFilter(text);
                 s1=deal[0];
                 s2=deal[0];
                 s3=deal[0];
                 s4=deal[0];
                 s5=deal[0];

                 sug1.setText(s1);
                 sug2.setText(s2);
                 sug3.setText(s3);
                 sug4.setText(s4);
                 sug5.setText(s5);

データベースクエリにこのコードを使用していますが、機能していません

public String[] getAllItemFilter(String text)
    {
        String [] columns=  new String[]{word};

        Cursor cursor = this.ourdatabase.query(database_table, columns, " word like 'text%' ", null, null, null, null);

        String [] deal = new String[cursor.getCount()];

            int iword = cursor.getColumnIndex(word);
            int i=0;
            for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext())
            {
                 deal[i]=cursor.getString(iword);
                 i++;
                 if(i==5)
                     break;
             }

            return deal;

    }

データベースから最初の5つの提案を取得するのを手伝ってくれる人はいますか?事前に感謝します

4

2 に答える 2

0

クエリが正しくありません。設定すると、毎回「text*」が検索されます(変数が変数として使用されるようにクエリをフォーマットするのを忘れていました)。

提供されたテキストで始まる単語が必要な場合は、カーソルを以下に示すものに変更します。

Cursor cursor = this.ourdatabase.query(database_table, columns, " word like '" + text + "%' ", null, null, null, null); 

提供されたテキストを含む単語だけが必要な場合は、次のように変更します。

Cursor cursor = this.ourdatabase.query(database_table, columns, " word like '%" + text + "%' ", null, null, null, null); 
于 2012-07-09T11:29:45.230 に答える
0

ループ制限ではなく、最初に SQL クエリの最後に「LIMIT=5」を設定する必要があります。これにより、リソースが節約されます。次に、word% を %word% に置き換えて、単語の先頭にも一致させることができます。

于 2012-07-09T10:55:45.257 に答える