如何根据用户条件查看数据库表中的数据?

时间:2018-08-16 10:25:46

标签: android sql

我想根据用户条件显示本地数据库表中的数据。

要显示的代码:

    public void viewContact(){
    String name = getIntent().getStringExtra("name").toString();
    tvName.setText(name);

    String phone = db.getContacts(name).toString();
    tvPhone.setText(phone);

    String web = db.getContacts(name.toString();
    tvWeb.setText(web);
}

DBHelper.class:

    public Cursor getContacts(String therapist_name){
    String selectQuery = " SELECT therapist_phone, therapist_web " +
            " FROM " + THERAPIST_TABLE + " WHERE " + THERA_NAME + " = " + "'" + therapist_name + "'";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    return cursor;
}

谁能指出我哪里出了问题?

说明: 该活动从先前的活动中接收联系人姓名(因此为getIntent())。然后,它希望从数据库中查看与该联系人有关的数据,从而希望查看phone_number和website列。

因此,如果Therapist_name与上一个活动中所选联系人的姓名相同,则它将仅在下一个活动中显示该联系人的therapist_number和therapist_website。

2 个答案:

答案 0 :(得分:0)

您只是返回游标对象。读取数据,然后返回检索到的数据。

示例:

Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null) {
    if (cursor.moveToFirst()) {
        do {
            //Save data in variables here
            ph_no = cursor.getString(0);  // therapist contact
            web = cursor.getString(1);    //therapist web
            } while (cursor.moveToNext());
     }
}
//pass an array of ph_no and web from here now

答案 1 :(得分:0)

您应该具有一个具有所需属性的对象联系人,并且每次运行查询时,请通过步骤Ana said,检查光标是否为null并移至第一个(我亲自检查了光标,如果为空则记录错误。

然后返回创建的对象,因此,在调用该方法时,您将拥有所有内容,就像这样:

public List<Contact> getContacts(String therapist_name){
    List<Contact> listOfContacts = new ArrayList<>();
    String selectQuery = " SELECT therapist_phone, therapist_web " +
            " FROM " + THERAPIST_TABLE + " WHERE " + THERA_NAME + " = " + "'" + therapist_name + "'";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor != null) {
      if (cursor.moveToFirst()) {
        do {
        //Save data in variables here
        String ph_no = cursor.getString(0);  // therapist contact
        String web = cursor.getString(1);    //therapist web
        listOfContacts.add(new Contact(ph_no, web));
        } while (cursor.moveToNext());
      }
    }
 return listOfContacts;
}

这将返回对象列表,以防万一有多个匹配项。您可以对其进行调整以获得一个或第一个匹配项,然后仅返回Contact对象,这样就可以得到数据,