从SQLite数据库读取整数返回0?

时间:2015-04-25 16:40:02

标签: android sql database integer cursor

在我的Android应用程序中,我有一个SQLite数据库,用于存储学生成绩信息。我能够正确阅读成绩类别,但出于某种原因,当我尝试阅读成绩时,resCurs.getInt(gradeIndex)每次都返回0,即使我的数据库中的成绩值显然不是0。任何帮助我非常感激,因为我发现我的代码没有错误

GradeDBOpenHelper.java

package bcs421.jorgeramirez.hwk.gradeapp.adv;

 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteDatabase.CursorFactory;
 import android.database.sqlite.SQLiteOpenHelper;

 public class GradeDBOpenHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "GradeData.db";
public static final String DATABASE_TABLE = "GradeData";
public static final int DATABASE_VERSION = 1;

public static final String KEY_ID = "_id";
public static final String COLUMN_CAT = "category";
public static final String COLUMN_NUM = "itemnumber";
public static final String COLUMN_DESC = "description";
public static final String COLUMN_GRD = "grade";
public static final String COLUMN_DATE = "date";

static final String DATABASE_CREATE =
        "CREATE TABLE " + DATABASE_TABLE +  "(" + 
        KEY_ID + " integer primary key autoincrement, " +
        COLUMN_CAT + " varchar(20), " +
        COLUMN_NUM + " integer, " +
        COLUMN_DESC + " varchar(255), " +
        COLUMN_GRD + " integer, " +
        COLUMN_DATE + " varchar(255));";

private static final String STUDENT_SELECT =
        "SELECT * FROM " + DATABASE_TABLE + ";";

static final String GRADE_INSERT_1 =
        "INSERT INTO " + DATABASE_TABLE + " VALUES (NULL, 'Homework', 1, 'Assigment 1 - Schedule App', 100, '02/10/2015');";

static final String GRADE_INSERT_2 =
        "INSERT INTO " + DATABASE_TABLE + " VALUES (NULL, 'Quiz', 1, 'Quiz - Syllabus', 100, '02/10/2015');";

static final String GRADE_INSERT_3 =
        "INSERT INTO " + DATABASE_TABLE + " VALUES (NULL, 'Lab', 1, 'Lab Ch1 - Hello Yankees', 100, '01/28/2015');";

static final String GRADE_INSERT_4 =
        "INSERT INTO " + DATABASE_TABLE + " VALUES (NULL, 'Lab', 2, 'Lab - Hello World', 100, '02/04/2015');";

static final String GRADE_INSERT_5 =
        "INSERT INTO " + DATABASE_TABLE + " VALUES (NULL, 'Lab', 3, 'Lab - Manifest and Different Screens', 0, '02/09/2015');";







public GradeDBOpenHelper(Context context, String name, CursorFactory factory, int version) {
    super(context, name, factory, version);

}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(DATABASE_CREATE);
    db.execSQL(GRADE_INSERT_1);
    db.execSQL(GRADE_INSERT_2);
    db.execSQL(GRADE_INSERT_3);
    db.execSQL(GRADE_INSERT_4);
    db.execSQL(GRADE_INSERT_5);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}


}

MainActivity.java

 package bcs421.jorgeramirez.hwk.gradeapp.adv;

 import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.Intent;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.TextView;

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String[] projection = { GradeDBOpenHelper.KEY_ID,
            GradeDBOpenHelper.COLUMN_CAT,
            GradeDBOpenHelper.COLUMN_NUM,
            GradeDBOpenHelper.COLUMN_DESC,
            GradeDBOpenHelper.COLUMN_GRD,
            GradeDBOpenHelper.COLUMN_DATE
    };

    // Get the content resolver
    ContentResolver cr = getContentResolver();

    // Query the ContentProvider using the ContentResolver
    Uri targetUri = Uri.parse("content://bcs421.jorgeramirez.hwk.gradeapp");
    Cursor resultCursor = cr.query(targetUri, projection, null, null, null);


    TextView numGrade = (TextView)findViewById(R.id.numGrade);
    String numG = Double.toString(calcAverage(resultCursor));
    numGrade.setText(numG);

    Button viewGradeList = (Button)findViewById(R.id.viewGradesButton);
    viewGradeList.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, GradeListActivity.class);
            startActivity(intent);

        }

    });




}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

public double calcAverage (Cursor resCurs)
{
    int hwkSum = 0, examSum = 0, labSum = 0, quizSum = 0;
    int hwkCnt = 0, examCnt = 0, labCnt = 0, quizCnt = 0;
    double hwkAvg = 0, examAvg = 0, labAvg = 0, quizAvg = 0;
    double hwkPortion, examPortion, labPortion, quizPortion;
    double totAverage;

    int categoryIndex = resCurs.getColumnIndex(GradeDBOpenHelper.COLUMN_CAT);
    int gradeIndex = resCurs.getColumnIndex(GradeDBOpenHelper.COLUMN_GRD);
    String category;
    int gd;

    while (resCurs.moveToNext())
    {
        category = resCurs.getString(categoryIndex);
        gd = resCurs.getInt(gradeIndex);
        switch (category)
        {
        case "Homework":
            hwkSum = hwkSum + gd;
            ++hwkCnt;
            break;
        case "Exam":
            examSum = examSum + gd;
            ++examCnt;
            break;
        case "Lab":
            labSum = labSum + gd;
            ++labCnt;
            break;
        case "Quiz":
            quizSum = quizSum + gd;
            ++quizCnt;
            break;
        default:
            break;
        }
    }

    if (hwkCnt != 0)
    {
        hwkAvg = hwkSum/hwkCnt;
    }
    if(examCnt != 0)
    {
        examAvg = examSum/examCnt;
    }
    if(labCnt != 0)
    {
        labAvg = labSum/labCnt;
    }
    if(quizCnt != 0)
    {
        quizAvg = quizSum/quizCnt;
    }

    hwkPortion = hwkAvg * .35;
    examPortion = examAvg * .50;
    labPortion = labAvg * .05;
    quizPortion = quizAvg * .10;

    totAverage = hwkPortion + examPortion + labPortion + quizPortion;

    return totAverage;

 }
 }

0 个答案:

没有答案