تفاوت دو دستور
con.close();
//---------------------
con.Dispose();
چیست
و چه موقع باید استفاده بشه(چهار عمل اصلی Insert, Delete, Update, Select)
Printable View
تفاوت دو دستور
con.close();
//---------------------
con.Dispose();
چیست
و چه موقع باید استفاده بشه(چهار عمل اصلی Insert, Delete, Update, Select)
شما هنگامی که close استفاده میکنید یعنی میخواید ارتباط اصلی خودتون با بانک رو ببندید دیگه اعمالی سمت کانکشن شما صورت نمیگیره. اما متد dispose که رابط شما با gc هست در واقع میگه که کل آبجکت کانکشن رو نابود کنید و از بین ببیرید.
ولی این dispose چرا به خوبی جواب نمیده؟؟!شما مثلا یه sqlcommand رو اضافه کنید و در آخر کار اون رو disposeکنید حالااگر رو پروژه کلیک راست و ران کد آنالیز رو بزنین تو قسمت هشدار ها پیام میده که
"Warning 1 CA2000 : Microsoft.Reliability : In method 'frmadduser.btnDelete_Click(object, EventArgs)', call System.IDisposable.Dispose on object 'cmd' before all references to it are out of scope.
"
کدهم اینه
SqlCommand cmd=new SqlCommand("DELETEuser",connection);
string username = dataGridView1.CurrentRow.Cells[0].Value.ToString();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@username", username);
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
cmd.Dispose();
frmadduser_Load(null, null);
MessageBox.Show("حذف شد");
ولی اگر از بلاک using استفاده بشه این مشکل دیگه نیست که اونهم یه سری ضعف داره!!!!!!