0

データベースに2つの値(電話番号と住所)を挿入する小さなアプリを開発しています。挿入部分が完成しました。ここで、特定の電話番号に対応する住所を検索したいと思います。私は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);
            }

そして、これは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 に答える