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

您的查询不正确。当您设置它时,它每次都在寻找“文本*”(您忘记格式化查询,因此变量被用作变量)。

如果您想要以提供的文本开头的单词,请将光标更改为我在下面显示的内容:

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 回答