PDA

View Full Version : سوال: یستن کلیه کانکشنهای باز به دیتا بیس به صورت همزمان



ozzy_mra
شنبه 12 دی 1388, 14:49 عصر
اساتید عزیز سلام
می خواستن بدونم روشی وجود داره که تمام کانکشنهای باز در برنامه که به هر دلیل بسته نشده اند را به صورت همزمان مثلاً هنگام خروج از برنامه windows application بست؟
ممنونم

morteza.azad
شنبه 12 دی 1388, 15:02 عصر
سلام. براي اينكار بهتره يك كلاس بنويسيد و هر جا خواستين يك كانكشن بسازيد، از كلاستون يك نمونه ايجاد كنيد و يا اون رو ببنديد، اين كار كامپايلر بعد از تمام كارتون اون كانكشن رو ميبنده. اگه ميخواين كد رو براتون بزارم.

ozzy_mra
یک شنبه 13 دی 1388, 10:18 صبح
سلام. براي اينكار بهتره يك كلاس بنويسيد و هر جا خواستين يك كانكشن بسازيد، از كلاستون يك نمونه ايجاد كنيد و يا اون رو ببنديد، اين كار كامپايلر بعد از تمام كارتون اون كانكشن رو ميبنده. اگه ميخواين كد رو براتون بزارم.

سلام
همینکارم کردم ولی به هر حال تو کد نویسی ممکنه به علتهای مختلف فراموش کنم که کانکشنو ببندم. سوال من اینه که راهی هست که تو ایونت کلوز فرم تمام کانکشنها رو کیل کرد؟؟

morteza.azad
یک شنبه 13 دی 1388, 10:22 صبح
سلام
خوب من هم منظورم دقيقا همين بود كه كلاسي كه مينويسي وضعيت كانكشن رو چك كنه كه اگه بازه اون رو ببنده يا اگه بسته هست. :لبخند:

AliRezaPro
یک شنبه 13 دی 1388, 10:32 صبح
شما چرا دستورات خودتوتو USing نمیکنید؟
شما با این کار بعد از اینکه دستورات داخل بلاک به اتمام رسید کاملا میشه مطمئن بود تمام حافظه آزاد شده است.
using(Conn)
{
.
.
.
}

ozzy_mra
یک شنبه 13 دی 1388, 10:32 صبح
سلام
خوب من هم منظورم دقيقا همين بود كه كلاسي كه مينويسي وضعيت كانكشن رو چك كنه كه اگه بازه اون رو ببنده يا اگه بسته هست. :لبخند:

استاد ممکنه کدشو برام بزاری اگه زحمتی نیست؟ ممنونم

ozzy_mra
یک شنبه 13 دی 1388, 10:33 صبح
شما چرا دستورات خودتوتو USing نمیکنید؟
شما با این کار بعد از اینکه دستورات داخل بلاک به اتمام رسید کاملا میشه مطمئن بود تمام حافظه آزاد شده است.
using(Conn)
{
.
.
.
}

سلام
میشه بیشتر راهنماییم کنید؟؟

DataMaster
یک شنبه 13 دی 1388, 10:38 صبح
البته توی SQL Server میشه یه پروسیجر داشت که تمام کانکش های متصل به دیتابیس رو Kill کنه
توی بخش دیتابیس اسکیوال قبلا این پروسیجر رو گذاشته بودند

ozzy_mra
یک شنبه 13 دی 1388, 13:24 عصر
البته توی SQL Server میشه یه پروسیجر داشت که تمام کانکش های متصل به دیتابیس رو Kill کنه
توی بخش دیتابیس اسکیوال قبلا این پروسیجر رو گذاشته بودند

سلام
فرمایش شما صحیح ولی این دستور که شما می فرمائید تمام کانکشنها را می کشد من می خوام تمام کانکشنهای یک کاربر که کد کاربریش تو sql تعریف نشده و فقط تو برنامه را kill کنم یعنی تمام کانکشنهای بازی که application این کاربر باز کرده رو ببندم

AliRezaPro
یک شنبه 13 دی 1388, 14:13 عصر
سلام
فرمایش شما صحیح ولی این دستور که شما می فرمائید تمام کانکشنها را می کشد من می خوام تمام کانکشنهای یک کاربر که کد کاربریش تو sql تعریف نشده و فقط تو برنامه را kill کنم یعنی تمام کانکشنهای بازی که application این کاربر باز کرده رو ببندم
چه استدلالی پشت همچین کاری هست؟

ozzy_mra
دوشنبه 14 دی 1388, 08:15 صبح
چه استدلالی پشت همچین کاری هست؟

من ذهنم به سمت Oprn Tran ها رفته بود ولی فکر کنم به باز یا بسته بودن کانکشن ربطی نداشته باشه...درست می فرمائید
ممنون

morteza.azad
دوشنبه 14 دی 1388, 10:00 صبح
كلاسي به اين صورت تعريف ميكني اول

public class CreateConnection
{
private SqlConnection cnn = new SqlConnection(@"server=.;initial catalog=Example;integrated Security=true");
public SqlConnection Create()
{
if (cnn.State.Equals(ConnectionState.Open))
cnn.Close();
else if (cnn.State.Equals(ConnectionState.Closed))
cnn.Open();
return cnn;
}
}


بعد تو فرمت اينجوري استفادش ميكني:



CreateConnection c = new CreateConnection();
SqlConnection cnn = c.Create();


بعدش ديگه ميتوني از اين cnn استفاده كني، خوبيش اينه كه مطمئني كه ديگه هيچ كانكشني بازي وجود نداره. :تشویق:

csharp2008
دوشنبه 14 دی 1388, 12:32 عصر
به نظر من اگه تمام کانشکن هات توی یک کلا باشن بهتره بعدش توی Destructor اون کلاس ،همه کانشن هات رو می تونی ببندی .