从Android中的sqlite数据库中获取Right对应的值

时间:2013-03-28 09:09:03

标签: android sqlite textview android-sqlite

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

以下是我的buttonSearch的代码:

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

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

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之外)都是受欢迎的。

先谢谢。

1 个答案:

答案 0 :(得分: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 "";
    }