SQLite Cursor返回一列的值作为所有列的值

时间:2016-08-18 21:38:59

标签: java android sqlite csv cursor

我试图从我创建的包含英国大学信息的SQLite数据库中读取数据。

该表格包含以下列:

Institution
Rank_2017
Guardian_score100
Satisfied_with_course
Satisfied_with_teaching
Satisfied_with_feedback
Student_to_staff_ratio
Average_entry_tariff
Career_after_6_months

我已经从CSV文件填充了表格,然后尝试调用getUni()方法,该方法将返回每个列中的信息,并使用它们构建University对象,但是当我检查University的每个成员变量的值时,名称和等级已经适当设置,但是之后的每个变量也被设置为Rank_2017的值。

getUni()方法

public University getUni(String id)
{
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_UNIVERSITIES, COLUMNS, " Institution = ?",
            new String[] { id }, null, null, null, null);

    if(cursor != null){
        cursor.moveToFirst();
    }


    System.out.println("@@@" + cursor.getCount() + "@@@");
    University uni = new University();

    if(cursor != null){
        uni.setUni_name(cursor.getString(0));
        uni.setRank(cursor.getString(1));
        uni.setGuardianScore(cursor.getString(2));
        uni.setCourseSatisfaction(cursor.getString(3));
        uni.setTeachingSatisfaction(cursor.getString(4));
        uni.setFeedbackSatisfaction(cursor.getString(5));
        uni.setStudentStaffRatio(cursor.getString(6));
        uni.setAverageEntryTariff(cursor.getString(7));
        uni.setCareerAfterSixMonths(cursor.getString(8));

    }
    // return University
    return uni;
}

在调用cursor.getColumnCount()之后,我可以看到它按预期返回10列,但有些事情并不恰当。

例如,如果我致电University uni = getUni("Glasgow");,它会正确分配University namerank_2017,但是在此之后分配每个成员变量{ {1}}。

CSV行示例:

rank_2017

任何帮助解决这个问题的人都会非常感激。

1 个答案:

答案 0 :(得分:0)

我怀疑当您导入CSV文件时,它无法正常工作。也许您没有指定分隔符,而SQLite只为一个列创建了一个表。或者它奇怪地填充了表格,并且您的SQL适配器以惊人的方式“帮助”。如果您的CSV文件有一些空格,则可能发生这种情况。

我会使用SQLite shell来验证Glassgow行是否在数据库中按预期显示。这至少可以让你区分SQLite问题和Java库问题(如果有的话)。

HTH。