Stworzyliśmy WebAPI do wysyłania zapytań do bazy danych Oracle. Kwerenda zwraca wyniki, które są ogromne, więc czasami wyrzuca OutOfMemoryException
.Wzywając ogromne dane zwracane przez Web API
Zalecono użycie koncepcji Paging. Nie rozumiem, w jaki sposób aplikacja kliencka będzie wiedziała, ile razy musi zostać wywołany interfejs API, aby uzyskać cały zestaw wyników. Muszę również utworzyć oddzielną klasę dla stronicowania lub mogę operować nią w moim kontrolerze API.
Czy ktoś może mi pomóc, ponieważ jest to moje pierwsze internetowe API. Nie możemy create procedury przechowywane na to, ponieważ mamy tylko do odczytu na bazie
public HttpResponseMessage Getdetails([FromUri] string[] id)
{
string connStr = ConfigurationManager.ConnectionStrings["ProDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
var inconditions = id.Distinct().ToArray();
var srtcon = string.Join(",", inconditions);
DataSet userDataset = new DataSet();
var strQuery = @"SELECT * from STCD_PRIO_CATEGORY where STPR_STUDY.STD_REF IN(" + srtcon + ")";
using (OracleCommand selectCommand = new OracleCommand(strQuery, dbconn))
{
using (OracleDataAdapter adapter = new OracleDataAdapter(selectCommand))
{
DataTable selectResults = new DataTable();
adapter.Fill(selectResults);
var returnObject = new { data = selectResults };
var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json"));
ContentDispositionHeaderValue contentDisposition = null;
if (ContentDispositionHeaderValue.TryParse("inline; filename=ProvantisStudyData.json", out contentDisposition))
{
response.Content.Headers.ContentDisposition = contentDisposition;
}
return response;
}
}
}
}
Twój kod ma problem sql-wtrysku. Przeczytaj, jak używać parametrów poleceń. – rene