السلام عليكم ورحمة الله وبركاته أخواني الأعزاء انا استخدم الكود التالي في ملف cs في موقعي لفتح قاعدة البيانات وتنفيذ العمليات علهيا :
public class cDataConn
{
private OracleConnection connection;
private OracleCommand command;
public string ReadData(string sql)
{
try
{
using (connection = new OracleConnection(WebConfigurationManager.ConnectionStrings["sgid"].ConnectionString))
{
using (command = new OracleCommand(sql, connection))
{
connection.Open();
using (OracleDataReader dr = command.ExecuteReader())
{
dr.Read();
return dr.GetString(0);
}
}
}
}
catch(Exception ex)
{
return ex.Message;
}
}
}فهل هذه الطريقة تغني عن استخدام cm.Dispose و cn.Dispose لان بصراحة صممت موقع يقوم بتسجيل معلومات والبحث فيها وعند تنزيله على السيرفر واستخدامه من قبل العاملين هناك تقريبا 30 مستخدم خلال ساعة فقط من عملهم على النظام ظهر عندي خطأ في السيرفر يخص قاعدة البيانات وهو ORA-01000 maximum open cursors
فتوقعت ان يكون ذلك بسبب برمجتي للتعامل مع قاعدة البيانات في عدم اغلاق مؤشر الاستعلام بعد الاستخدام وذلك بسبب قناعتي بان الطريقة اعلاه تفي بالغرض .
فهل انا بحاجه لعمل التالي :
SqlConnection cn = new SqlConnection(connectionString); SqlCommand cm = new SqlCommand(commandString, cn); cn.Open(); cm.ExecuteNonQuery(); cm.Dispose(); cn.Close(); cn.Dispose();