0

我是初学者。我只想制作一个程序,用户将在我的 EditText 上输入数据,然后程序将从数据库中搜索这些数据。如果找到,它将获取与数据(用户输入的)相关的所有数据,然后它们将显示在我的 TextView 中。我写了一些代码,但是没有用。请帮我。

“bNum”是我表中列的名称。

这是我的代码的一部分:

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);

}}
4

2 回答 2

1

字符串比较是用equals()方法完成的

尝试更换你的

if (c.toString() == s)

if (c.toString().equals(s))
于 2013-06-28T12:21:30.677 回答
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() 应该是您从数据库中获取所有数据的方法。

于 2013-06-28T16:32:51.640 回答