如何在 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()
}
如您所见,我想获取指定学生的总数。
我试过下面的代码,但我没有得到我正在寻找的东西!
//数据库助手
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()
}