在Android中从sqlite数据库获取正确的对应值

在Android中从sqlite数据库获取正确的对应值

问题描述:

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

这里是我的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方法:

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

在此先感谢。

您的代码正在返回列名称而不是值。请在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 ""; 
    } 
+0

感谢ton @Amit。像魅力一样工作! – 2013-03-28 09:24:39