我试图创建一个包含字符串的搜索函数,搜索本地db,然后输出字符串中的内容。在此之后,我将显示btn上的字符串。
这是我的搜索功能。
public String Search(String n)
{
String info = "";
Cursor cu = HRdb.rawQuery("SELECT * FROM HRinfotbl WHERE (lname LIKE '"+n+"' OR fname LIKE '"+n+"';",null);
int count = cu.getCount();
cu.moveToFirst();
for (Integer j = 0; j < count; j++)
{
info = info +
"Surname : "+cu.getString(cu.getColumnIndex("lname"))+"\n"+
"Name : "+cu.getString(cu.getColumnIndex("fname"))+"\n"+
"Email : "+cu.getString(cu.getColumnIndex("email"))+"\n"+
"Contact : "+cu.getString(cu.getColumnIndex("contact"))+"\n\n";
cu.moveToNext() ;
}
HRdb.close();
return info;
}这里还有其他可能影响它的代码。
Button search = (Button) findViewById(R.id.searchbtn);
search.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
dbView.setText(Search(searchtxt.getText().toString()));
}
});希望有人能帮忙,谢谢。
发布于 2014-01-14 13:15:57
首先,有一个SQL语法错误:最后缺少)。你可以移除孩子的父母。
其次,对于LIKE,您可能希望使用%来匹配任意数量的字符。
第三,使用?占位符和绑定参数,而不是硬编码任何用户输入。
示例:
Cursor cu = HRdb.rawQuery("SELECT * FROM HRinfotbl WHERE " +
"lname LIKE '%' || ? || '%' OR fname LIKE '%' || ? || '%'",
new String[] { n, n });其中,||是字符串连接运算符。我还删除了结束时的;,因为它不是必要的。
https://stackoverflow.com/questions/21113716
复制相似问题