如何使用具有多个参数的内容提供程序从sqlite检索数据

时间:2015-04-21 07:45:42

标签: android sqlite

我正在使用Android应用程序,让用户添加一些数据,然后对数据进行查询,例如:用户可以添加一些医生信息,如(姓名,电话,城市等...)然后用户可以查询医生数据库以检索特定参数(例如城市)中的医生。

我有这段代码:

@Override
public Cursor query(Uri uri, String[] projection, String selection,
                    String[] selectionArgs, String sortOrder) {

    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
    qb.setTables(DOC_TABLE_NAME);

    switch (uriMatcher.match(uri)) {
        case DOC:
            qb.setProjectionMap(DOC_PROJECTION_MAP);
            break;
        case DOC_ID:
            qb.appendWhere( _ID + "=" + uri.getPathSegments().get(1));
            break;
        default:
            throw new IllegalArgumentException("Unknown URI " + uri);
    }
    if (sortOrder == null || sortOrder == ""){

        sortOrder = _ID;
    }
    Cursor c = qb.query(db, projection, selection, selectionArgs,
            null, null, sortOrder);

    c.setNotificationUri(getContext().getContentResolver(), uri);

    return c;
}

我应该在一个以上的参数示例中添加医生检索器的情况:id,name,city。我应该加上这个:

case DOC_ID_NAME_CITY:
    qb.appendWhere( _ID + "=" + uri.getPathSegments().get(1));
    qb.appendWhere( Name + "=" + uri.getPathSegments().get(2));
    qb.appendWhere( City + "=" + uri.getPathSegments().get(3));
break;

还怎么称呼它?

谢谢:)

1 个答案:

答案 0 :(得分:0)

请查看这段代码,它将提供如何检索多个值

的巨大想法
public String allusers()
{
    Log.d("ALLusers in db", "working");
    String result="";

    String []columns=new String[]{KEY_EMAIL_new,KEY_PASWORD_new};
    Cursor c= ourDatabase.query(DATABASE_TABLE_New, columns, null, null, null, null, null);

    int iemail=c.getColumnIndex(KEY_EMAIL_new);
    int ipassword=c.getColumnIndex(KEY_PASWORD_new);
    for (c.moveToFirst();!c.isAfterLast();c.moveToNext())
    {
        result=result+c.getString(iemail)+"         "+c.getString(ipassword)+"      "+ "\n";

    }

    return result;
}

我收到所有的电子邮件和密码。您可以根据需要修改此代码,如果您只需要一个医生数据,那么就不要使它成为循环。我在这里循环,因为我需要所有用户。