PDA

View Full Version : خطای connection هنگام باز کردن یا بستن connection



rezaei_y
شنبه 17 تیر 1391, 17:40 عصر
با سلام به همه دوستان برنامه نویس

من در تمام قسمت های کدم هر جا که نیاز دارم connection رو open کنم از کد
if (keshavarz.conn.State == ConnectionState.Closed)
keshavarz.conn.Open();

و هرجا که میخوام کانکشن رو ببندم از کد

if(keshavarz.conn.State == ConnectionState.Open)
keshavarz.conn.Close();


استفاده میکنم اما بعضا پیش میاد که خطا میگیره که connection باز و شما نمیتونید دوباره آنرا باز کنید
یا کانکشن بسته اس نمیتونید دوباره ببندید
ولی کدی که من نوشتم چک میکنه که آگه بسته اس باز کن یا اگه باز ببند

مشکل کجاست؟؟

Direlap
شنبه 17 تیر 1391, 19:25 عصر
این کد رو امتحان کنید :

if (Conn.State == ConnectionState.Closed)
Conn.Open();

فکر کنم اشتباه کد شما در کشاورز . کان هست . به نظرم باید یکیش باشه . اگه کشاورز نام کانکشن شماست پس نباید از کان استفاده کنید .

majidrezaei2007
یک شنبه 18 تیر 1391, 01:12 صبح
این کد رو امتحان کنید :

if (Conn.State == ConnectionState.Closed)
Conn.Open();

فکر کنم اشتباه کد شما در کشاورز . کان هست . به نظرم باید یکیش باشه . اگه کشاورز نام کانکشن شماست پس نباید از کان استفاده کنید .


کشاورز اسم کلاس یا نیم اسپیسشونه بابا

این conn که شما تعریف کردید احتمالا static هست . بنا به خاصیت اشیاء static بعضا از این مشکلات پیش میاد . یعنی مواردی بوده
بهترین راه اینه که شما هرجای برنامه که کلا نیاز به کار با بانک داری و هرجا که conn رو باز می کنی . بقیه کد هاتو توی یک try catch finally بنویسی . اونوقت کد conn.close(); رو بزاری توی finally . بعد اون دیگه تضمین می کنه که بعد از اتمام کار conn رو می بنده . اینطوری دیگه نیازی به چک کردن باز و بسته بودن هم نداری و این مشکلت هم حل میشه . مثلا اینطوری :

sqlcommand cmd = new sqlcommand("insert into tbl values('a')",conn);
conn.open();
try
{
cmd.ExecuteNonQuery();
}
catch
{
}
finnaly
{
conn.close();
}