در این مقاله با هم خواهیم دید که چگونه میتوانیم Connection String در لحظه اجرا را برای یک برنامه ویندوز با استفاده از سی شارپ ، پیکربندی کنیم. این کار به کاربر کمک میکند تا Connection اش را در طول اجرا تغییر دهد. همچنین اگر تعداد زیادی سرور و دیتابیس وجود داشته باشد ، تعداد Connection String ها بالا خواهد بود و کاربر نمیتواند همه چیز را در فایل App.Config اضافه کند. این برای کاربرانی که ممکن است از سرور و دیتابیس تصادفی در طول اجرا استفاده کنند مفید است و نیازی به ایجاد یک Connection Stringدیگر نخواهند داشت.
پیکربندی Connection String
۱ ویژوال استودیو را باز کنید و یک برنامه ویندوز جدید ایجاد کنید.
۲ فایل App.Config را به پروژه اضافه کنید.
۳ کد زیر را در قسمت Connection String اضافه کنید.
<configuration> <connectionStrings> <add name="con" providerName="System.Data.sqlclient" connectionString="" /> </connectionStrings> </configuration>
۴ حال دو عدد TextBox ، دو عدد Label و یک Button به فرم اضافه کنید. همانند تصویر زیر :
۵ یک dropdown همانند زیر برای نمایش یک ستون از جدول اضافه کنید.
۶ فضای نام زیر را نیز اضافه کنید :
using System.Data.SqlClient;
قطعه کد زیر مربوط به رویداد کلیک Button میباشد :
try { //Constructing connection string from the inputs StringBuilder Con = new StringBuilder("Data Source="); Con.Append(txtServer.Text); Con.Append(";Initial Catalog="); Con.Append(txtDatabase.Text); Con.Append(";Integrated Security=SSPI;"); string strCon = Con.ToString(); updateConfigFile(strCon); //Create new sql connection SqlConnection Db = new SqlConnection(); //to refresh connection string each time else it will use previous connection string ConfigurationManager.RefreshSection("connectionStrings"); Db.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ToString(); //To check new connection string is working or not SqlDataAdapter da = new SqlDataAdapter("select * from employee",Db); Hide Copy Code SqlDataAdapter da = new SqlDataAdapter("select * from employee");//incase earlier Visualstudios DataTable dt = new DataTable(); da.Fill(dt); cmbTestValue.DataSource=dt; cmbTestValue.DisplayMember="Emp_Id"; } catch (Exception E) { MessageBox.Show(ConfigurationManager.ConnectionStrings["con"].ToString() + ".This is invalid connection", "Incorrect server/Database"); }
۷ فضای نام های زیر را اضافه کنید :
using System.Xml; using System.Configuration;
تابعی جدید با نام updateConfigFile که در زیر آمده است را ایجاد کنید :
public void updateConfigFile(string con){ //updating config file XmlDocument XmlDoc = new XmlDocument(); //Loading the Config file XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); foreach (XmlElement xElement in XmlDoc.DocumentElement) { if (xElement.Name == "connectionStrings") { //setting the coonection string xElement.FirstChild.Attributes[2].Value = con; } } //writing the connection string in config file XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); }
۸ حال برنامه را Build کنید و نام سرور و دیتابیس را وارد کنید. Dropdown را نیز چک کنید که درست کار کند. نام دیتابیس تغییر تغییر دهید و بر روی Connect Again کلیک کنید تا با دیتابیس جدید اتصال برقرار شود.
امیدوارم از آن لذت برده باشید !
موفق باشید !
با سلام
ممنونم از آموزش خوبتون
فقط یه مشکل دارم که من با Entity اتصال به دیتابیسمو برقرار کردم و میخوام که کانکشن برناممو بتونم تغیر بدم
یعنی اینکه بتونم نام دیتابیس و نام سرور و نام کاربر یو رمز عبور دیتابیس رو از کاربر دریافت کنه و سپس به دیتابیس وصل بشه
ممنون میشم اگه کمکم کنید
آدرس ایمیل بنده Ehsannozari@gmail.com
در صور ت ممکن قبول زحمت کنید برام ایمیل کنید.
۱۳
سلام من هم همین مشکل رو دارم sabanetaria@gmail.com
۱۰
با سلام
منم همین مشکل رو دارم که با اینتتی کار میکنم لطفا تو این تایپیک مارو راهنمایی کنید
۱۸