LIKE查询无法在android中运行

时间:2014-07-15 21:16:07

标签: android

我正在尝试实现一个LIke查询,以根据搜索框中的用户输入从数据库中获取结果。

以下是我用来获取结果的方法

public Cursor getSearchResults(String query) {
    // TODO Auto-generated method stub
    //Toast.makeText(myContext, "dhfhgjhfghdfjghxdf", Toast.LENGTH_LONG).show();

    String[] args={query};

    return(getReadableDatabase().rawQuery("SELECT _id,chapter FROM chapters  WHERE chapter LIKE '%query%'", args));


}

此处%query%来自我的searchResultActivity.java

中的搜索操作
protected void onCreate(Bundle savedInstanceState) {


// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.search_query_results);

mQueryText = (ListView) findViewById(R.id.txt_query);
Toast.LENGTH_LONG).show();
 // Get the intent, verify the action and get the query
 Intent intent = getIntent();

 String query = intent.getStringExtra(SearchManager.QUERY);
 Toast.makeText(SearchResultsActivity.this,query, Toast.LENGTH_LONG).show();

  dbBookHelper = new BooklistHelper(this);
    ourCursor = dbBookHelper.getSearchResults(query);
    startManagingCursor(ourCursor);
    adapter = new AuthorAdapter1(ourCursor);
    mQueryText.setAdapter(adapter);

    //mQueryText.setOnItemClickListener(onListClick);

    }

但我收到此错误"无法绑定索引1处的参数,因为索引超出范围android。该陈述有0个参数"。
请帮帮我。 如果您需要更多信息,请与我们联系。 在此先感谢.. :))

2 个答案:

答案 0 :(得分:0)

试试这个:

String[] args= new String[]{query};
return(getReadableDatabase().rawQuery("SELECT _id,chapter FROM chapters  WHERE chapter LIKE '% ? %'", args));

答案 1 :(得分:0)

您的SQL没有任何?个变量占位符,但您有一个绑定参数query

将SQL更改为

SELECT _id,chapter FROM chapters  WHERE chapter LIKE '%' || ? || '%'

其中||是SQL中的字符串连接运算符。