如您所见,我想获取指定学生的总数。
我已经尝试了下面的代码,但我没有得到我正在寻找的东西!
//数据库助手
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();
}
我试图获得他的总学分的用户选择了三门类(class):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;
}
请注意,如果没有与学号匹配的行,则返回值为 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()
}
关于android - 如何在 MainClass 中显示游标计数(某物)返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728717/