如何在主类中显示游标计数(某物)返回

时间:2019-06-24 00:47:59

标签: android sqlite cursor

如您所见,我想获取指定学生的总数。

我尝试使用下面的代码,但没有得到所找到的内容!

// DatabaseHelper

$data = '<title>test</title>' . file_get_contents('copy.php');

file_put_contents('destination.xml', $data);

//主要

while

我试图获取其学分总数的用户被选为三个课程:2.5、5、2学分。 我希望Count(CourseCredit)的输出为9.5,但实际输出为2.5。

1 个答案:

答案 0 :(得分:1)

您可能想基于所选行的列的 SUM 而不是所选行的 COUNT :-

Cursor cursor = db.rawQuery("SELECT sum(CourseCredit) FROM tblCourses JOIN tblMyCourses ON tblCourses.CourseNumber = tblMyCourses.CourseNumber WHERE StudentNumber = ? ",new String[]{ StudentNo } );

在数据库助手中,您可以使用(替换当前的MyCredits方法):-

public double MyCredits(String StudentNo){

    double rv = 0;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT sum(CourseCredit) AS credits FROM tblCourses JOIN tblMyCourses ON tblCourses.CourseNumber = tblMyCourses.CourseNumber WHERE StudentNumber = ? ",new String[]{ StudentNo } );
    if (cursor.moveToFirst()) {
        rv = cursor.getDouble(cursor.getColumnIndex("credits"));
    }
    cursor.close();
    return rv;
}

请注意,如果没有与学生编号匹配的行,则返回值为0。

然后您可以在Main中使用以下链接:-

double credits = db.MyCredits(commonValues.SaveStrudentID);
if (credits > 0) {
    Log.i(TAG, String.valueOf(credits));
} else {
    Toast.makeText(context, "You didn't selected any Course", Toast.LENGTH_SHORT).show()
}