/** * Get rows results from query cursor. * * @param cur Cursor into query results * @return results in string form */ private JSONObject executeSqlStatementNDK( String query, JSONArray paramsAsJson, CallbackContext cbc) throws Exception { JSONObject rowsResult = new JSONObject(); boolean hasRows = false; SQLiteStatement myStatement = mydb.prepareStatement(query); try { String[] params = null; params = new String[paramsAsJson.length()]; for (int i = 0; i < paramsAsJson.length(); ++i) { if (paramsAsJson.isNull(i)) { myStatement.bindNull(i + 1); } else { Object p = paramsAsJson.get(i); if (p instanceof Float || p instanceof Double) myStatement.bindDouble(i + 1, paramsAsJson.getDouble(i)); else if (p instanceof Number) myStatement.bindLong(i + 1, paramsAsJson.getLong(i)); else myStatement.bindTextNativeString(i + 1, paramsAsJson.getString(i)); } } hasRows = myStatement.step(); } catch (Exception ex) { ex.printStackTrace(); String errorMessage = ex.getMessage(); Log.v("executeSqlBatch", "SQLitePlugin.executeSql[Batch](): Error=" + errorMessage); // cleanup statement and throw the exception: myStatement.dispose(); throw ex; } // If query result has rows if (hasRows) { JSONArray rowsArrayResult = new JSONArray(); String key = ""; int colCount = myStatement.getColumnCount(); // Build up JSON result object for each row do { JSONObject row = new JSONObject(); try { for (int i = 0; i < colCount; ++i) { key = myStatement.getColumnName(i); switch (myStatement.getColumnType(i)) { case SQLColumnType.NULL: row.put(key, JSONObject.NULL); break; case SQLColumnType.REAL: row.put(key, myStatement.getColumnDouble(i)); break; case SQLColumnType.INTEGER: row.put(key, myStatement.getColumnLong(i)); break; case SQLColumnType.BLOB: case SQLColumnType.TEXT: default: // (just in case) row.put(key, myStatement.getColumnTextNativeString(i)); } } rowsArrayResult.put(row); } catch (JSONException e) { e.printStackTrace(); } } while (myStatement.step()); try { rowsResult.put("rows", rowsArrayResult); } catch (JSONException e) { e.printStackTrace(); } } myStatement.dispose(); return rowsResult; }