在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 "";
}
感谢ton @Amit。像魅力一样工作! – 2013-03-28 09:24:39