0

我正在开发一个小型应用程序,其中将两个值插入数据库(电话号码和地址)。插入部分已完成。现在我想搜索特定电话号码的对应地址。我遵循了Androidhive的教程,并且效果很好。我的问题是当我插入一个特定的电话号码(已经存储在数据库中)并点击搜索按钮时,我TextView没有显示相应的地址。它只是在该文本中显示“名称”。我很确定我没有在任何地方硬编码文本“名称”。而且我也没有收到任何特定的错误。

这是我的按钮搜索的代码:

buttonSearch.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                long phone_number=Long.parseLong(searchEditText.getText().toString());

            String text=db.getAddress(phone_number);
            fetchedAddressTextView.setText(text);
            }

这是getAddress我的 Helper 类中定义的方法:

public String getAddress(long phone_number) {
        // TODO Auto-generated method stub
        SQLiteDatabase db = this.getReadableDatabase();


        try {
            Cursor c=db.query(TABLE_CONTACTS, new String[]{
                    KEY_ADDRESS
            },
            KEY_PH_NO + "=" + phone_number,
            null,
            null,
            null,
            null);

            if (c != null) {
                c.moveToFirst();
            }
        }
            catch (Exception e) {

                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        return KEY_ADDRESS;
    }

KEY_ADDRESS应该以字符串的形式返回与我搜索的数字对应的地址。

因此,感谢您对这个问题的任何帮助。或任何其他关于简单获取数据库中存储值的指针(除 vogella 或 androidhive 之外)都是受欢迎的。

提前致谢。

4

1 回答 1

1

您的代码返回列名而不是值。请在 c.moveToFirst(); 之后检查以下代码;陈述

public String getAddress(long phone_number) {
        // TODO Auto-generated method stub
        SQLiteDatabase db = this.getReadableDatabase();


        try {
            Cursor c=db.query(TABLE_CONTACTS, new String[]{
                    KEY_ADDRESS
            },
            KEY_PH_NO + "=" + phone_number,
            null,
            null,
            null,
            null);

            if (c != null) {
                c.moveToFirst();
                return c.getString (c.getColumnIndex (KEY_ADDRESS));
            }
        }
            catch (Exception e) {

                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        return "";
    }
于 2013-03-28T09:16:28.073 回答