[英]Rewrite SQLite statement 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();” 每個,但我不知道如何更改SQL方法以為所有三個單獨的模塊選擇所有三個講師。
嘗試更換
" WHERE " + Module_Name + " = \'" + mod1 + "\' OR \'" + mod2 + "\' OR \'" + mod3 + "\'";
與
" WHERE " + Module_Name + " = '" + mod1 + "' OR " + Module_Name + " = '" + mod2 + "' OR " + Module_Name + " = '" + 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 + "')";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.