/// <summary> /// This request is used as a short-hand for create a Statement and fetching the first batch /// of results in a single call without any parameter substitution. /// </summary> public async Task <ExecuteResponse> PrepareAndExecuteRequestAsync(string connectionId, string sql, uint statementId, long maxRowsTotal, int firstFrameMaxSize, RequestOptions options) { PrepareAndExecuteRequest req = new PrepareAndExecuteRequest { Sql = sql, ConnectionId = connectionId, StatementId = statementId, MaxRowsTotal = maxRowsTotal, FirstFrameMaxSize = firstFrameMaxSize }; WireMessage msg = new WireMessage { Name = Constants.WireMessagePrefix + "PrepareAndExecuteRequest", WrappedMessage = req.ToByteString() }; using (Response webResponse = await PostRequestAsync(msg.ToByteArray(), options)) { if (webResponse.WebResponse.StatusCode != HttpStatusCode.OK) { WireMessage output = WireMessage.Parser.ParseFrom(webResponse.WebResponse.GetResponseStream()); ErrorResponse res = ErrorResponse.Parser.ParseFrom(output.WrappedMessage); throw new WebException( string.Format( "PrepareAndExecuteRequestAsync failed! connectionId: {0}, Response code was: {1}, Response body was: {2}", connectionId, webResponse.WebResponse.StatusCode, res.ToString())); } else { WireMessage output = WireMessage.Parser.ParseFrom(webResponse.WebResponse.GetResponseStream()); ExecuteResponse res = ExecuteResponse.Parser.ParseFrom(output.WrappedMessage); return(res); } } }
/// <summary> /// This request is used as a short-hand for create a Statement and fetching the first batch /// of results in a single call without any parameter substitution. /// </summary> public async Task<ExecuteResponse> PrepareAndExecuteRequestAsync(string connectionId, string sql, uint statementId, long maxRowsTotal, int firstFrameMaxSize, RequestOptions options) { PrepareAndExecuteRequest req = new PrepareAndExecuteRequest { Sql = sql, ConnectionId = connectionId, StatementId = statementId, MaxRowsTotal = maxRowsTotal, FirstFrameMaxSize = firstFrameMaxSize }; WireMessage msg = new WireMessage { Name = Constants.WireMessagePrefix + "PrepareAndExecuteRequest", WrappedMessage = req.ToByteString() }; using (Response webResponse = await PostRequestAsync(msg.ToByteArray(), options)) { if (webResponse.WebResponse.StatusCode != HttpStatusCode.OK) { WireMessage output = WireMessage.Parser.ParseFrom(webResponse.WebResponse.GetResponseStream()); ErrorResponse res = ErrorResponse.Parser.ParseFrom(output.WrappedMessage); throw new WebException( string.Format( "PrepareAndExecuteRequestAsync failed! connectionId: {0}, Response code was: {1}, Response body was: {2}", connectionId, webResponse.WebResponse.StatusCode, res.ToString())); } else { WireMessage output = WireMessage.Parser.ParseFrom(webResponse.WebResponse.GetResponseStream()); ExecuteResponse res = ExecuteResponse.Parser.ParseFrom(output.WrappedMessage); return res; } } }