PDA

View Full Version : سوال: تغییر دادن رشته اتصال (connection string) در فایل app.config در زمان اجرا



piroozman
چهارشنبه 22 اردیبهشت 1389, 02:15 صبح
برنامه ای نوشتم که از دیتاست ها استفاده می کند. این برنامه از رشته اتصال موجود در فایل app.config برای مراودات خود با پایگاه اطلاعاتی استفاده می کند. خوب مطمئناً در صورت تغییر پایگاه داده، رشته اتصال موجود در فایل مذکور نیز باید تغییر داد. آیا راهی هست که بتونم رشته اتصال یا همان connection string موجود در این فایل را به صورت run time تغییر بدم و اگر نیست چطوری باید عمل کرد.
سئوال بعدیم این هستش که چطوری میتونم کاری کنم که دیتاست ها رشته اتصالی که مدنظرخودم هستش استفاده کنند و سراغ رشته اتصال موجود در فایل پیکربندی نرند؟
قبلا از مساعدت و پاسخ شما تشکر می کنم

piroozman
پنج شنبه 23 اردیبهشت 1389, 20:57 عصر
با توجه به اینکه کسی به این تاپیک جوابی نداد و بنده نیز طی این مدت از منابع دیگر استفاده کردم پاسخ این تاپیک رو همین جا عرض می کنم امیدورام مفید واقع بشه.
قبل از دادن پاسخ لازمه که از دوست عزیز و خوبم جناب آقای وزیری (http://www.barnamenevis.org/forum/member.php?u=14084) تشکر کنم که مشکل بنده را با تلفن حل کرد. خدایا این دوستان خوب را پاینده و زنده بدار. الهی آمین
اما پاسخ این تاپیک به لطف آقای وزیری (http://www.barnamenevis.org/forum/member.php?u=14084):
برای این کار باید در Design یکی از فایلهای پروژه ی خود یک تغییر کوچولو بدید:
به این فایل مراجعه کنید:
Solution Your Projects--> Your Project --> Properties -->Settings.settings -->Settings.Designer.cs
در این فایل کد زیر را مشاهده خواهید کرد:

public string DenizkalaConnectionString {
get {
return ((string)(this["DenizkalaConnectionString"]));
}

}
همانطور که می بینید این خصیصه ای است که رشته اتصال یا همان connection string را در کل برنامه در اختیار شما می گذارد. این خصیصه به دلایل امنیتی به شکل فقط خواندنی است (چون فقط get دارد) . شما به راحتی می توانید با اضافه کردن Set مقدار رشته ی اتصال برنامه خود را در هر زمان از اجرا تغییر دهید. پس کد فوق را به شکل زیر اصلاح کنید:

public string DenizkalaConnectionString {
get {
return ((string)(this["DenizkalaConnectionString"]));
}
set
{
this["DenizkalaConnectionString"]=value;
}
}
دیگه مسائل امنیتی اش با خودتون.

ahkh4000
یک شنبه 06 شهریور 1390, 22:39 عصر
با تشکر فراوان از شما جناب piroozman واقعا مشکل گشا بود
من تا حالا اگه به جوابی می رسیدم به فکر اینکه به بقیه همه بگم نبودم ولی با این کار شما مشتاق شدم به دیگران هم اینطور موارد رو که خودم بلد نیستم یاد بدم
دمت گرم

HAMID484
چهارشنبه 18 آبان 1390, 11:46 صبح
دوست عزیز خیلی ممنون