У меня есть следующая функция в android studio, которая должна возвращать sqlite-курсор. Проблема заключается в аргументе selectionArgs. Всякий раз, когда я передаю ему более одного значения, он возвращает курсор с 0 записями.
public Cursor getCursor(String strListWhere, String strTable, String strCols) {
String strColsToReturn = mySqliteHandler.getWhereColNamesFromJsonString(strListWhere);
String strArgs = mySqliteHandler.getWhereColArgsFromJsonString(strListWhere);
Log.d(TAG, "qqqq9: " + strArgs);
String strTableName = strTable;
String[] strColumnsToReturn = { strCols };
String strSelectWhere = strColsToReturn ;
String[] strSelectArgs = { strArgs };
Cursor csrResult = sqLiteDatabase.query(true, strTableName, strColumnsToReturn, strSelectWhere, strSelectArgs, null, null, null, null);
Log.d(TAG, "qqqq9: " + csrResult.getCount());
return csrResult;
}
Значение в strColsToReturn равно animal_class = ? and province_name = ?
Значение в strArgs равно Bird, KwaZulu-Natal
Поэтому я хочу, чтобы оно было animal_class = 'Bird' and province_name = 'KwaZulu-natal'
Когда я передаю только одно значение, оно работает, например. Значение в strColsToReturn равно animal_class = ?
Значение в strArgs равно Bird
Кто-нибудь может помочь?
РЕДАКТИРОВАТЬ: работает следующий код:
public Cursor getCursor(String strListWhere, String strTable, String strCols) {
String strColsToReturn = mySqliteHandler.getWhereColNamesFromJsonString(strListWhere);
List<String> arrWhere = new ArrayList<String>();
arrWhere = mySqliteHandler.getWhereArray(strListWhere);
String[] finalValue = new String[ arrWhere.size() ];
arrWhere.toArray( finalValue );
String strTableName = strTable;
String[] strColumnsToReturn = { strCols };
String strSelectWhere = strColsToReturn ;
Cursor csrResult = sqLiteDatabase.query(true, strTableName, strColumnsToReturn, strSelectWhere, finalValue, null, null, null, null);
return csrResult;
}