2016-08-18 81 views
0

我試圖從我創建的包含英國大學信息的SQLite數據庫中讀取數據。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");,它將正確地分配兩個Universityname,並rank_2017,每個成員變量之後一樣rank_2017然而分配。

CSV列例子:

Glasgow,26,70.8,89.3,91.6,67.3,14.5,478.4,78.5 

任何解決此問題的幫助將非常感激。

回答

0

我懷疑當您導入CSV文件時,它無法正常工作。也許你沒有指定分隔符,SQLite爲你創建一個只有一列的表。或者它奇怪地填充了表,並且你的SQL適配器以一種令人驚訝的方式「幫助」。例如,如果您的CSV文件有一些空白,就會發生這種情況。

我會使用SQLite shell來驗證Glassgow行在數據庫中按預期顯示。至少可以讓你區分SQLite問題和Java庫問題(如果有的話)。

HTH。

相關問題