tarafından döndürülen devasa bir verinin okunması Bir Oracle veritabanını sorgulamak için WebAPI'yi oluşturduk. Sorgu büyük olan sonuçları döndürür, bu nedenle bazen OutOfMemoryException
'u atar. Web API'sı
öneri
Çağrı kavramını kullanmaktı. İstemci uygulamasının, sonuç kümesinin tamamını almak için API'nin kaç kez çağrılması gerektiğini bilmeyeceğini anlamıyorum. Ayrıca, sayfalama için ayrı bir sınıf oluşturmam gerekiyor mu veya API denetleyicimde çalıştırabilir miyim? Bu benim ilk Web API olduğu gibi kimse bana bu konuda yardım edebilir. biz sadece veritabanı üzerinde okuma erişimine sahiptir çünkü bunun için saklı yordamlar oluşturma olamazpublic 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;
}
}
}
}
Kodunuz bir sql enjeksiyon sorunu var. Komut parametrelerinin nasıl kullanılacağını okuyun. – rene