从数据库获取完成建议

时间:2012-07-09 10:51:59

标签: android database autocomplete

我正在尝试从数据库中检索前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条建议。谢谢提前

2 个答案:

答案 0 :(得分:0)

首先应在SQL查询结束时设置“LIMIT = 5”而不是循环限制,这样可以节省资源。然后你可以用%word%替换单词%来匹配单词开头。

答案 1 :(得分: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);