2016-08-18 3 views
0

私は英国の大学に関する情報を含むSQLiteデータベースから読み込みを試みています。すべての列の値として1つの列の値を返すSQLite Cursor

次の表の列があります。私は、CSVファイルからテーブルを埋め、その後、各列に情報を返しますgetUni()メソッドを呼び出し、そしてそれらを使用することを試みてきた

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 

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; 
} 

私は予想通り、それは10個の列を返すことがわかりますcursor.getColumnCount()を呼び出した後、しかし、何かがかなり右ではありません。

例えば、私はUniversity uni = getUni("Glasgow");を呼び出す場合、しかし同じようrank_2017後の各メンバ変数を割り当て、正しく両方Universityname、及びrank_2017を割り当てます。

CSV行例:

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

この問題を解決するすべてのヘルプは非常にいただければ幸いです。

答えて

0

CSVファイルをインポートしたときに、正しく動作しなかったと思われます。おそらくあなたはセパレータを指定しておらず、SQLiteはあなたのために1つのカラムしか持たないテーブルを作成しました。あるいは、テーブルが不自然に作成され、SQLアダプタが驚くような方法で「助けている」ということです。たとえば、CSVファイルに空白があるとします。

SQLiteシェルを使用して、Glassgowの行がデータベースに期待通りに表示されることを確認します。少なくとも、SQLiteの問題とJavaライブラリの問題(存在する場合)を区別できるようになります。

HTH。

関連する問題