带有selectionArgs参数的android studio sqlite问题

问题描述 投票:0回答:1

我在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;

    }
android sqlite android-studio
1个回答
0
投票

strColumnsToReturn的值应该是一个包含您要返回的列名的数组,例如:

new String[] {column1, column2, column3} 

其中column1, column2, column3是字符串。strSelectWhere的值应为字符串:

"animal_class = ? and province_name = ?"

[strSelectArgs的值应该是一个字符串数组,其中包含您要传递给?的每个strSelectWhere占位符的参数:

new String {"Bird", "KwaZulu-Natal"}

您可以找到更多here

© www.soinside.com 2019 - 2024. All rights reserved.