با سلام و احترام خدمت مهندسان عزیز
من یک پروژه WPF دارم که اطلاعات رو در دیتابیس ذخیره میکنه
الان مشکلی که دارم اینه که میخوام نرم افزار رو تحت شبکه استفاده کنم بنابراین قبل از لود نرم افزار باید به سرور و دیتایس نرم افزارم وصل بشم.
میخوام یه فرمی مثل ↓ این که کاربر نام سرور و دیتابیس رو حالا یا از طریق Windows Authenticatin یا SQL Authentication
انتخاب کنه و وصل سرور بشه و از نرم افزار استفاده کنه.
حالا چطور باید اطلاعات این فرم رو جایگزین (نام سرور و دیتابیس) جایگزینه Connection String که توی App.config هست بکنم
ممنونم میشم راهنمایی کنید.
برای تغییر کانکشن برنامه باید Connection String خودتون رو از حالت ثابت (کانکشنی که در فایل app.config می باشد ثابت است) به حالت داینامیک تغییر بدید.
خب گاهی اوقات نیاز هست که کانکشن استرینگ برنامه تغییر کنه. دقت کنید که تغییر کانکشن در برنامه نویسی تحت شبکه انجام میشه معمولا. چون توی شبکه ها ممکنه آی پی سرور یا نام دیتابیس یا رمز دیتابیس مرتبا تغییر کنه و کاربر باید بتونه کانکشن رو تغییر بده تا ارتباطش با دیتابیس برقرار بمونه.
برای ایجاد کانکشن استرینگ داینامیک مراحل زیر رو انجام بدید :
همانطور که ملاحظه می کنید این پنجره دارای 3 ورودی می باشد. از این 3 ورودی برای ایجاد کانکشن استرینگ داینامیک استفاده خواهیم کرد.
private void btn_ok_Click(object sender, RoutedEventArgs e)
{
var entityConnectionString = BuildEntityConnection("Data Source=" + txt_serverip.Text.Trim() + "; Initial Catalog=" + txt_dbname.Text.Trim()
+ "; user Id=sa;Password=" + txt_password.Password + ";Integrated Security=false");
try
{
RegistryKey connectionKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\foroosh");
//Site : AspCore.Ir
try
{
connectionKey.SetValue("CreateConnection",entityConnectionString);
}
catch
{
MessageBox.Show("در ارتباط با سرور اشکالی بوجود آمده است");
}
finally
{
connectionKey.Close();
}
MessageBox.Show("ارتباط با سرور برقرار شد");
this.Close();
}
catch
{
MessageBox.Show("در ارتباط با سرور اشکالی بوجود آمده است");
}
finally
{
}
}
نکته : دقت کنید که مسیری که در رجیستری کانکشن استرینگ در آن ساخته می شود مسیر زیر می باشد:
HKEY_CURRENT_USER --> Software --> foroosh
نکته : در کدهای بالا یک Key به نام CreateConnection ایجاد کرده ایم که کانکشن استرینگ را در این کلید در رجیستری ذخیره می کنیم.
نکته : شما می توانید برای امنیت بهتر متغیر entityConnectionString که حاوی رشته اتصال شما می باشد را رمزنگاری کنید.
در حال حاضر بعد از اجرای کدهای بالا باید کانکشن استرینگ شما در رجیستری ساخته شده باشد. تصویر زیر را ملاحظه کنید :
در کلاس DbContext یک سازنده یا Constructor وجود دارد که در ابتدا به صورت زیر می باشد :
public forooshEntities()
: base("forooshentities")
{
در این کلاس نام کانکشن استاتیک یا ثابت نوشته شده است. ما باید این سازنده را به صورت زیر تغییر دهیم :
public forooshEntities(string connectionString)
: base(connectionString)
{
همانطور که می بینید یک پارامتر ورودی به نام connectionString در ورودی این سازنده تعریف کردیم. به این ترتیب هر موقع که قرار است با دیتابیس ارتباط برقرار شود باید این متغیر به صورت داینامیک به مدل داده ای ارسال شود.
public static class PublicVariable
{
public static string ConnectionString = "";
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
string RegisterConnectionString = "";
RegistryKey ConnectionKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\foroosh");
RegisterConnectionString =(string) ConnectionKey.GetValue("CreateConnection");
PublicVariable.ConnectionString = RegisterConnectionString;
}
forooshEntities database = new forooshEntities(PublicVariable.ConnectionString);
در اینجا شی database حاوی دیتابیس و جداول ما می باشد. به این ترتیب شما کانکشن استرینگ رو داینامیک کردید و میتونید با تغییر آی پی سرور یا رمز دیتابیس یا حتی نام دیتابیس بدون نیاز به تغییر در سورس اصلی پروژه کانکشن استرینگ رو تغییر بدید.
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
346
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
312
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4263
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4279
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3875
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
654
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3170
- پاسخ :
2
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
58
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
97
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|