다른 방법으로이 문제를 해결할 수 있습니다. 희망을 가지고 다른 사람들을 도울 수 있기를 바랍니다. 개선이 있다면 제안을 부탁드립니다.
난 내 ConnectionString을 클래스로
<connectionStrings>
<add name="DBConn" connectionString="Data Source=Servername;Network Library = DBMSSOCN;Initial Catalog=database;User ID=user;Password=password" providerName="System.Data.SqlClient"/>
</connectionStrings>
을 ConnectionString을의 app.config 호출하고있다.
public class ConnectionString
{
public string DBConn = ConfigurationManager.ConnectionStrings["DBConn"].ToString();
}
백엔드에는 app.config connectionString에 새 값을 추가하기위한 새로운 서버 연결 정보를 추가하는 양식이 만들어졌습니다. SvrConfig 양식
using System;
using System.Windows.Forms;
using System.Configuration;
using System.Reflection;
namespace B4_HRM_System
{
public partial class SvrConfig : Form
{
public SvrConfig()
{
InitializeComponent();
}
private void btnsave_Click(object sender, EventArgs e)
{
try
{
if (txtserver.Text == "")
{
MessageBox.Show("Please enter Server Name.", "7KProject", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtserver.Focus();
return;
}
if (txtdb.Text == "")
{
MessageBox.Show("Please enter Database.", "7KProject", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtdb.Focus();
return;
}
if (txtuser.Text == "")
{
MessageBox.Show("Please enter Username.", "7KProject", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtuser.Focus();
return;
}
if (txtpass.Text == "")
{
MessageBox.Show("Please enter Password.", "7KProject", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtpass.Focus();
return;
}
string DBConn = "Data Source={0};Initial Catalog={1};User ID={2};Password={3}";
DBConn = string.Format(DBConn, txtserver.Text, txtdb.Text, txtuser.Text, txtpass.Text);
Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
ConnectionStringsSection connSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connSection.ConnectionStrings["DBConn"].ConnectionString = DBConn;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("AppSettings");
MessageBox.Show("Successfully Completed", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnexit_Click(object sender, EventArgs e)
{
this.Hide();
b4login frmb4login = new b4login();
frmb4login.Show();
}
}
}
하지만 connectionString을 저장할 때마다 응용 프로그램을 다시 시작해야합니다. 어떤 방법이나 개선 SvrConfig 양식을 닫을 때 업데이트/응용 프로그램을 다시 시작할 필요가 없으므로 로그인 폼을 표시하기 전에 app.config 파일에서 connectionString 새로 고치십시오.
휠을 다시 발명하지 마십시오. 이미 ['SqlConnectionStringBuilder']가 있습니다 (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder (v = .110) .aspx) 당신이하려는 일을 꽤 많이 수행합니다. –