我正在开发一个小应用程序,其中将两个值插入数据库(电话号码和地址)。
完成了插入部分。现在我想搜索特定电话号码的相应地址。我已经按照 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之外)都是受欢迎的。
先谢谢。
答案 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 "";
}