我在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;
}
strColumnsToReturn
的值应该是一个包含您要返回的列名的数组,例如:
new String[] {column1, column2, column3}
其中column1, column2, column3
是字符串。strSelectWhere
的值应为字符串:
"animal_class = ? and province_name = ?"
[strSelectArgs
的值应该是一个字符串数组,其中包含您要传递给?
的每个strSelectWhere
占位符的参数:
new String {"Bird", "KwaZulu-Natal"}
您可以找到更多here