如何在 MainClass 中显示光标计数(某物)return

How to display Cursor count(something) return in the MainClass

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

我试过下面的代码,但我没有得到我正在寻找的东西!

//数据库助手

public Cursor MyCredits(String StudentNo){
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT COUNT(CourseCredit) FROM tblCourses JOIN tblMyCourses ON tblCourses.CourseNumber = tblMyCourses.CourseNumber WHERE StudentNumber = ? ",new String[]{ StudentNo } );
    return cursor;
}

//主要

String StudentNo = commonValues.SaveStudentID)
        Cursor cursor1 = db.MyCredits(StudentNo);
        if (cursor1.getCount() > 0){
            while (cursor1.moveToNext()){
                Log.i(TAG, cursor1.getString(0));
            }
        }else{
            Toast.makeText(context, "You didn't selected any Course", Toast.LENGTH_SHORT).show();
        }

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

您可能希望查询基于所选行的列的 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;
}

请注意,如果没有与学号匹配的行,return 值将为 0。

然后您可以在 Main 中使用 link 以下内容:-

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()
}