我是初学者。我只想制作一个程序,用户将在我的EditText上输入数据,然后程序将从数据库中搜索这些数据。如果找到,它将获得与数据(用户输入的)相关的所有数据,然后它们将显示在我的TextView中。我写了一些代码,但它没有用。请帮帮我。
“bNum”是我表中的coloumn名称。
这是我的代码的一部分:
final EditText bnumber = (EditText) findViewById(R.id.editText1);
Button search = (Button) findViewById(R.id.button1);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
try {
DataSearch((bnumber.getText()).toString());
} finally {
book.close();
}
}
});
}
private static final String[] SELECT = { "bNum" };
protected void DataSearch(String s) {
SQLiteDatabase db = book.getReadableDatabase();
Cursor c = db.query("btable", SELECT, null, null, null, null, null);
while (c.moveToNext()) {
if (c.toString() == s)
ShowingData(c);
}}
private void ShowingData(Cursor c) {
StringBuilder builder = new StringBuilder("Information\n");
String pName = c.getString(c.getColumnIndex("pName"));
String price = c.getString(c.getColumnIndex("price"));
String quantity = c.getString(c.getColumnIndex("quantity"));
builder.append(pName).append("Product Name:");
builder.append(price).append("Price:");
builder.append(quantity).append("Quantity:");
TextView result = (TextView) findViewById(R.id.textView1);
result.setText(builder);
}}
答案 0 :(得分:1)
使用equals()
方法
尝试替换
if (c.toString() == s)
与
if (c.toString().equals(s))
答案 1 :(得分:1)
我看不到您的数据库,也不知道您的查询方法是如何工作的。但是,例如,如果您使用返回每行中所有值的游标对象查询整个数据库,这应该可以工作:
protected void DataSearch(String s) {
SQLiteDatabase db = book.getReadableDatabase();
Cursor c = db.getAllDatas();
c.moveToFirst();
while (c.moveToNext()) {
if (c.getString(0).equalsIgnoreCase(s))
ShowingData(c);
}}
getAllDatas()应该是一个从数据库中获取所有数据的方法。