在android中使用rawQuery查询数据库

在android中使用rawQuery查询数据库,android,mysql,sql,Android,Mysql,Sql,我正在编写一个简单的查询,可以从android中的表中获取特定字段记录 这是我的桌子设计: userid、name、totalmarks(所有字符串) 我的问题是: public String getTotalMarks(String UserID) { String mark = "0"; SQLiteDatabase db = this.getWritableDatabase(); String queryMarks = "SELECT * FROM " +TA

我正在编写一个简单的查询,可以从android中的表中获取特定字段记录

这是我的桌子设计:

userid、name、totalmarks(所有字符串)

我的问题是:

public String getTotalMarks(String UserID)
{
    String mark = "0";

    SQLiteDatabase db = this.getWritableDatabase(); 

    String queryMarks = "SELECT * FROM " +TABLE_MARK_DETAILS +" WHERE " +KEY_USERID + " =" + UserID  ;
    Cursor cursor = db.rawQuery(queryMarks, null);

    if (cursor.moveToFirst()) 
    {
        do 
        {
            mark = cursor.getString(0);
        } 
        while (cursor.moveToNext());
    }

    Log.e("Cursor", "Value" +mark);

    cursor.close();
    db.close();

    return mark;
}
我得到了完美的结果。我想知道有没有比上面更好的查询数据库的方法?

publicstringgettotalmarks(stringuserid){
    public String getTotalMarks(String UserID) {
        String mark = null;
        SQLiteDatabase db = this.getReadableDatabase(); 
        String queryMarks = "SELECT " + KEY_TOTALMARKS + " FROM " +  TABLE_MARK_DETAILS + " WHERE " +KEY_USERID + " =" + UserID;
        Cursor cursor = db.rawQuery(queryMarks, null);

        if(null != cursor){
            if(cursor.moveToFirst() && 0 < cursor.getCount()){
                mark = cursor.getString(0);
            }
            cursor.close();
        }
        Log.e("Cursor", "Value" + mark);
        db.close();

        return TextUtils.isEmpty(mark) ? "0" : mark;
    }
字符串标记=null; SQLiteDatabase db=this.getReadableDatabase(); String queryMarks=“从“+表标记详细信息+”中选择“+KEY\u TOTALMARKS+”,其中“+KEY\u USERID+”=“+USERID”; Cursor Cursor=db.rawQuery(queryMarks,null); 如果(null!=光标){ if(cursor.moveToFirst()&&0
如果您只需要一列,那么您可以选择该列而不是
select*
。如果只希望返回一行,则不需要
do while
循环;但是,如果查询可能返回多行,那么您当前的代码只返回最后一行中的值,我会询问这是否是故意的行为。@Karakuri-我只需要一个列结果,只会得到一行。你能举例说明如何在没有循环的情况下获得相同的结果吗?
if(cursor.moveToFirst()){mark=cursor.getString(0);}