我正在尝试实现一个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个参数"。
请帮帮我。
如果您需要更多信息,请与我们联系。
在此先感谢.. :))
答案 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中的字符串连接运算符。