2016-05-14 14 views
-1

モジュールに応じて対応する講師を探すためにデータベースを検索するメソッドを記述しました。しかし、これを実行すると、3つの同じ名前が保存されます。 で、その後ここに呼ばれSQLiteステートメントを書き直すSELECT WHERE - Android Eclipse

public List<tableModules> getStudentsLecturers(String mod1, String mod2, String mod3) { 
     List<tableModules> studentModuleLecturer = new ArrayList<tableModules>();  
     // Select All Query to find lecturers depending on modules  
     Log.d("Lecturers", mod1); 
     Log.d("Lecturers", mod2); 
     Log.d("Lecturers", mod3); 
     String selectQuery = "SELECT DISTINCT " + Module_Lecturer + " FROM " + Table2 + " WHERE " + Module_Name + " = \'" + mod1 + "\' OR \'" + mod2 + "\' OR \'" + mod3 + "\'"; 
     Log.d("1", "1"); 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do {    
       tableModules moduleLecturers = new tableModules();    
       moduleLecturers.modulelecturer = cursor.getString(0);   
       studentModuleLecturer.add(moduleLecturers);   
      } while (cursor.moveToNext()); 
     } 
     // return lecture list 
     return studentModuleLecturer;  
    } 

MainActivity.java

List<tableModules> lecturers = db.getStudentsLecturers(mod1, mod2, mod3); 
       if (!lecturers.isEmpty()) 
       {   
       for (tableModules session: lecturers) 
       { 
        Editor editor = preferences.edit(); 
        //Save lecturers to list 
        for (int i=0; i < lecturers.size(); i++) { 
         if (counter == 0) 
         {      
         lecturer1 = session.modulelecturer.toString(); 
         editor.putString("lec1", lecturer1); 
         Log.d("Lecs", "1"); 
         editor.commit(); 
         counter++; 
         } 
         if (counter == 1) 
         {     
         lecturer2 = session.modulelecturer.toString(); 
         editor.putString("lec2", lecturer2); 
         Log.d("Lecs", "2"); 
         editor.commit(); 
         counter++; 
         } 
         if (counter == 2) 
         { 
         lecturer3 = session.modulelecturer.toString(); 
         editor.putString("lec3", lecturer3); 
         Log.d("Lecs", "3"); 
         editor.commit(); 
         counter++; 
         } 
         else 
         {        
          Log.d("Lecs", "ERROR"); 
         } 
        } 

私は同じ「session.modulelecturer.toStringを(保存てることを得る:ここで

は方法であり、 ); " 3つの別々のモジュールすべてに対して3人の講師をすべて選択するSQLメソッドを変更する方法を理解することはできません。

答えて

2

実際に
" WHERE " + Module_Name + " = '" + mod1 + "' OR " + Module_Name + " = '" + mod2 + "' OR " + Module_Name + " = '" + mod3 + "'"; 

" WHERE " + Module_Name + " = \'" + mod1 + "\' OR \'" + mod2 + "\' OR \'" + mod3 + "\'"; 

を交換してみてください、あなたは

WHERE ModuleName = 'This' OR 'That' 

を言うことはできませんが、

WHERE ModuleName = 'This' OR ModuleName = 'That' 
を言うことができます

可能な値ごとに列名を書き換えるのは難しいことですが、SQLでの動作方法です。

WHERE ModuleName IN ('This', 'That', '...') 

だからあなたは、クエリになることができます:


代わりに、よりコンパクトなフォームを書くことができますいくつかの理由

" WHERE " + Module_Name + " IN ('" + mod1 + "', '" + mod2 + "', '" + mod3 + "')"; 
+0

は、このまだ3人のすべての講師に同じ名前を返します! : – Uyyyfgfar

+0

3つの変数すべてに同じ値を渡しています。クエリにエラーがあり、目に飛び込んで固定しました。別のエラーがあります。 –

関連する問題