Skip to content

Only first resultset returns #26

@krudensoft

Description

@krudensoft

If sql call more that one results, like this:
select 1 aaa; select 2 bbb;
this module returns only [{"aaa":1}]
some changes in Query.java resolve that: [[{"aaa":1}],[{"bbb":2}]]
Query.java

///add
import com.facebook.react.bridge.Arguments;

///replace
protected Void doInBackground(String... params) {
String driverClass = "net.sourceforge.jtds.jdbc.Driver";
String query = params[0];
try {
Class.forName(driverClass);
Statement stmt = dbConnection.createStatement();
ResultSet rs = stmt.executeQuery(query);

        WritableArray resultArray = Arguments.createArray();
        WritableArray writableArray;
        int n = 0;
        do
        {
            if(n>0) rs = stmt.getResultSet();
            n++;

            JSONArray json = JSON.toJSON(rs);
            Object[] array = ArrayUtil.toArray(json);
            writableArray = ArrayUtil.toWritableArray(array);
            resultArray.pushArray(writableArray);

            rs.close();
        }
        while(stmt.getMoreResults());
        

        sqlResponse = resultArray;
    } catch (SQLException e) {
        Log.e(eTag, "exception", e);
        sqlError = e.getMessage();
    } catch (ClassNotFoundException e) {
        Log.e(eTag, "exception", e);
        sqlError = e.getMessage();
    } catch (Exception e) {
        Log.e(eTag, "exception", e);
        sqlError = e.getMessage();
    }
    return null;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions