我试图从我创建的包含英国大学信息的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
name
和rank_2017
,但是在此之后分配每个成员变量{ {1}}。
CSV行示例:
rank_2017
任何帮助解决这个问题的人都会非常感激。
答案 0 :(得分:0)
我怀疑当您导入CSV文件时,它无法正常工作。也许您没有指定分隔符,而SQLite只为一个列创建了一个表。或者它奇怪地填充了表格,并且您的SQL适配器以惊人的方式“帮助”。如果您的CSV文件有一些空格,则可能发生这种情况。
我会使用SQLite shell来验证Glassgow行是否在数据库中按预期显示。这至少可以让你区分SQLite问题和Java库问题(如果有的话)。
HTH。