📄 dbconfigform.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Common;
using System.Data.Sql;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Configuration;
using System.Xml;
namespace GPSSerialPortData
{
public partial class DBConfigForm : Form
{
public DBConfigForm()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.FixedDialog;
btnSave.Enabled = false;
}
private void btnTest_Click(object sender, EventArgs e)
{
DbConnection conn = new SqlConnection();
conn.ConnectionString = "Database=soft_sailingservice;Server="+tbServer.Text+";user id="+tbUserId.Text+";pwd="+tbPassword.Text+";Integrated Security=False;";
try
{
conn.Open();
MessageBox.Show("连接成功", "提示");
}
catch
{
MessageBox.Show("不能建立数据库连接", "提示");
return;
}
finally
{
conn.Close();
}
btnSave.Enabled = true;
}
private void btnSave_Click(object sender, EventArgs e)
{
string connstr = "Database=soft_sailingservice;Server=" + tbServer.Text + ";user id=" + tbUserId.Text + ";pwd=" + tbPassword.Text + ";Integrated Security=False;";
SaveConfig(connstr);
this.DialogResult = DialogResult.Yes;
//Application.Restart();
//if (MessageBox.Show("设置成功,要应用设置请从新启动程序\n是否重启程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
//{
// Application.Restart();
//}
//else
//{
// this.Close();
//}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void DBConfigForm_Load(object sender, EventArgs e)
{
groupBox1.Visible = false;
groupBox2.Visible = true;
groupBox2.Dock = DockStyle.Fill;
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.RunWorkerAsync();
}
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result.ToString().ToLower() == "true")
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
groupBox2.Visible = false;
groupBox1.Visible = true;
groupBox1.Dock = DockStyle.Fill;
string[] connstr = ConfigurationManager.ConnectionStrings["SailingServiceDbConnString"].ConnectionString.Split(';');
tbServer.Text = connstr[1].Substring(7, connstr[1].Length - 7);
tbUserId.Text = connstr[2].Substring(8, connstr[2].Length - 8);
tbPassword.Text = connstr[3].Substring(4, connstr[3].Length - 4);
MessageBox.Show("不能建立数据库连接\n请配置数据库", "提示");
}
}
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
DbConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["SailingServiceDbConnString"].ConnectionString;
try
{
conn.Open();
e.Result = true;
}
catch
{
e.Result = false;
}
finally
{
conn.Close();
}
}
private delegate void Callback();
private void TestConnection()
{
DbConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["SailingServiceDbConnString"].ConnectionString;
try
{
conn.Open();
this.Close();
this.DialogResult = DialogResult.OK;
}
catch
{
MessageBox.Show("不能建立数据库连接\n请配置数据库", "提示");
groupBox2.Visible = false;
groupBox1.Visible = true;
groupBox1.Dock = DockStyle.Fill;
}
finally
{
conn.Close();
}
string[] connstr = ConfigurationManager.ConnectionStrings["SailingServiceDbConnString"].ConnectionString.Split(';');
tbServer.Text = connstr[1].Substring(7, connstr[1].Length - 7);
tbUserId.Text = connstr[2].Substring(8, connstr[2].Length - 8);
tbPassword.Text = connstr[3].Substring(4, connstr[3].Length - 4);
}
private void btnApply_Click(object sender, EventArgs e)
{
string connstr = "Database=soft_sailingservice;Server=" + tbServer.Text + ";user id=" + tbUserId.Text + ";pwd=" + tbPassword.Text + ";Integrated Security=False;";
SaveConfig(connstr);
//if (MessageBox.Show("设置成功,要应用设置请从新启动程序\n是否重启程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)== DialogResult.Yes)
//{
// Application.Restart();
//}
#region MyRegion
//// 打开当前文件的配置文件
//Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//string na = config.FilePath;
//// 干掉原先的配置
//int a = config.Sections.Count;
//ConfigurationSection section1 = config.Sections["connectionStrings"];
//string t = section1.SectionInformation.GetRawXml();
//a = config.Sections.Count;
////config.Save();
//config = ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath);
//ConfigDataClass1 configData1= new ConfigDataClass1();
//// 把新的配置更新上去
//ConfigurationSection section2 = ConfigurationManager.GetSection("connectionStrings") as ConfigurationSection;
//config.Sections.Add("connectionStrings2", configData1);
//// 保存配置文件
//config.Save();
#endregion
}
private void SaveConfig(string ConnenctionString)
{
XmlDocument doc = new XmlDocument();
//获得配置文件的全路径
string strFileName = System.Windows.Forms.Application.ExecutablePath+".config";
doc.Load(strFileName);
//找出名称为“add”的所有元素
XmlNodeList nodes = doc.GetElementsByTagName("add");
for (int i = 0; i < nodes.Count; i++)
{
//获得将当前元素的key属性
XmlAttribute att = nodes[i].Attributes["name"];
//根据元素的第一个属性来判断当前的元素是不是目标元素
if (att != null)
{
if (att.Value == "SailingServiceDbConnString")
{
//对目标元素中的第二个属性赋值
att = nodes[i].Attributes["connectionString"];
att.Value = ConnenctionString;
break;
}
}
}
//保存上面的修改
doc.Save(strFileName);
}
}
class ConfigDataClass : System.Configuration.ConfigurationSection
{
public ConfigDataClass()
{ }
[ConfigurationProperty("Database")]
public string Database
{
get { return this["Database"].ToString(); }
set { this["Database"] = value; }
}
[ConfigurationProperty("Server")]
public string Server
{
get { return this["Server"].ToString(); }
set { this["Server"] = value; }
}
[ConfigurationProperty("userid")]
public string UserId
{
get { return this["userid"].ToString(); }
set { this["userid"] = value; }
}
[ConfigurationProperty("password")]
public string Password
{
get { return this["password"].ToString(); }
set { this["password"] = value; }
}
public override string ToString()
{
StringBuilder info = new StringBuilder();
info.AppendFormat("<add name=\"SailingServiceDbConnString\" providerName=\"System.Data.SqlClient\" connectionString=\"database={0};server={1};user id = {2};pwd = {3};\" />", Database, Server, UserId, Password);
return info.ToString();
}
}
class ConfigDataClass1 : System.Configuration.ConfigurationSection
{
public ConfigDataClass1()
{ }
public override string ToString()
{
StringBuilder info = new StringBuilder();
info.Append("a=b");
return info.ToString();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -