プリコンパイルされたデータベースがあり、渡されたパラメータに従ってデータを取得したい
しかし、奇妙な理由で、カーソルの結果は常に空になります
アダプターのgetDataメソッドは
public Cursor getData(String uso, String eta, String category,
String class) {
try {
Cursor c;
if (class.equals(null) && category.equals(null)) {
c = mDb.rawQuery("SELECT * FROM dbtable WHERE Uso LIKE \""
+ uso + "\" AND Eta LIKE \"" + eta
+ "\" AND Language LIKE \"" + language
+ "\" order by Name asc", null);
} else if (class.equals(null)) {
c = mDb.rawQuery("SELECT * FROM dbtable WHERE Uso LIKE \""
+ uso + "\" AND Eta LIKE \"" + eta
+ "\" AND Tipo LIKE \"" + category
+ "\" AND Language LIKE \"" + language
+ "\" order by Name asc", null);
} else if (category.equals(null)) {
c = mDb.rawQuery("SELECT * FROM dbtable WHERE Uso LIKE \""
+ uso + "\" AND Eta LIKE \"" + eta
+ "\" AND Certification LIKE \"" + class
+ "\" AND Language LIKE \"" + language
+ "\" order by Name asc", null);
} else {
c = mDb.rawQuery("SELECT * FROM dbtable WHERE Uso LIKE \""
+ uso + "\" AND Eta LIKE \"" + eta
+ "\" AND Tipo LIKE \"" + category
+ "\" AND Certification LIKE \"" + class
+ "\" AND Language LIKE \"" + language
+ "\" order by Name asc", null);
}
if (c != null) {
c.moveToNext();
}
return c;
} catch (SQLException mSQLException) {
Log.e(TAG, "getDataCar >>" + mSQLException.toString());
throw mSQLException;
}
}
...
このカーソルは、Carオブジェクトの配列にすべてのエントリを配置するメソッドで使用されます
public Car[] getDataDBCarsArray(String uso, String eta,
String category, String class) {
ArrayList<Car> list = new ArrayList<Car>();
Cursor c = getData(uso, eta, category, class);
try {
.....
上記のgetData(....)の代わりに使用しようとするとすべて正常に動作します
public Cursor getAllData(){
try {
Cursor c = mDb.rawQuery("SELECT * FROM dbtable order by Name asc", null);
if (c != null) {
c.moveToNext();
}
return c;
}catch (SQLException mSQLException) {
throw mSQLException;
}
}
したがって、getData(...)のクエリに問題があるようです。
しかし、どこにエラーがあるのかわかりません。
データベースを開こうとすると、渡されたパラメーターの要素はたくさんありますが、奇妙なことに何も見つかりません。
NB
言語は、デバイスの言語に依存する静的な値です