打造自己的 C# WinForm 应用程序的 SQL Server 连接配置界面
2008-12-20 18:54
549 查看
打造自己的 C# WinForm 应用程序的 SQL Server 连接配置界面
转载请注明出处:http://blog.csdn.net/CodingMouse/archive/2008/12/20/3565771.aspx
在C# WinForm 应用程序非常需要一个 SQL Server 连接配置界面,许多时候,因 SQL Server 服务器地址变更或 数据库登录账户 变更引起的连接失败等情况,客户就可能打电话“找麻烦”。既然这样,还不如提供一个可视化的配置界面,并在用户手册中说明使用方法,尽可能避免这种小问题带来的烦恼。为此,我将自己无聊时写的连接配置源码贴出来给初学者参考,以备不时之需!
想必大家都很熟悉VS服务器资源管理器中的【添加连接】对话框吧!下面是它的截图:
再看看我模仿这个对话框打造的WinForm程序SQL Server 连接配置界面:
呵呵!有几分相似吧!需要的朋友可以参考下面的源码。这份源码是完整的,粘贴到VS中即可使用。
窗体源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
namespace CodingMouse.CMCSharpSDK.UI.Forms
{
/// <summary>
/// 数据库连接配置界面
/// </summary>
public partial class frmConnectionConfig : Form
{
#region Private Members
/// <summary>
/// SQL Server 连接字符串创建者对象
/// </summary>
SqlConnectionStringBuilder _connectionStringBuilder = null;
/// <summary>
/// 当前应用程序名称
/// </summary>
string _applicationName;
#endregion
#region Private Methods
/// <summary>
/// 获取 本地网络所有 SQL Server 实例(数据源)
/// </summary>
private void GetSqlDataSource()
{
// 显示提示信息
string msg = "正在获取本地网络所有 SQL Server 服务器信息 ...";
this.toolTip.ToolTipIcon = ToolTipIcon.Info;
this.toolTip.ToolTipTitle = "请稍候...";
Point showLocation = new Point(
this.lblServer.Left + 2,
this.lblServer.Top + this.lblServer.Height);
this.toolTip.Show(msg, this, showLocation, 1000);
// 创建 提供了一种枚举本地网络内的所有可用 SQL Server 实例的机制 的实例
SqlDataSourceEnumerator sdsEnum = SqlDataSourceEnumerator.Instance;
// 调用 检索包含有关所有可见 SQL Server 2000 或 SQL Server 2005 实例的信息的 DataTable 的方法
DataTable serverDt = sdsEnum.GetDataSources();
// 创建新列以拼接 ServerName 以及 InstanceName 列的内容(以此构建连接字符串的 Server / Data Source 项)
DataColumn dcDataSource = new DataColumn("SqlDataSourceName", typeof(string));
// 将新列添加到 DataTable
serverDt.Columns.Add(dcDataSource);
// 创建新列以用中文方式显示 IsClustered 列内容
DataColumn dcIsClustered = new DataColumn("IsClusteredCHS", typeof(string));
// 将新列添加到 DataTable
serverDt.Columns.Add(dcIsClustered);
// 遍历 DataTable 并给新列赋予拼接后的值
foreach (DataRow dataRow in serverDt.Rows)
{
if (!string.IsNullOrEmpty(Convert.ToString(dataRow["InstanceName"])))
dataRow["SqlDataSourceName"] = string.Format(@"{0}/{1}",
Convert.ToString(dataRow["ServerName"]),
Convert.ToString(dataRow["InstanceName"]));
else
dataRow["SqlDataSourceName"] = string.Format(@"{0}",
Convert.ToString(dataRow["ServerName"]));
dataRow["IsClusteredCHS"] =
(Convert.ToString(dataRow["IsClustered"]).Trim().ToUpper() == "NO")
? "否" : ((Convert.ToString(dataRow["IsClustered"]).Trim().ToUpper() == "YES")
? "是" : dataRow["IsClustered"]);
}
// 如果包含数据行
if (serverDt.Rows.Count > 0)
{
// 创建窗体数据源封装类实例并封装 DataTable
BindingSource source = new BindingSource();
source.DataSource = serverDt;
// 设置 ComboBox 数据源
this.cboSqlDataSource.DataSource = source;
this.cboSqlDataSource.DisplayMember = "SqlDataSourceName";
this.cboSqlDataSource.ValueMember = "SqlDataSourceName";
// 设置 DataGridView 数据源
this.dgvServerInfo.DataSource = source;
// 设置中文列名
this.dgvServerInfo.Columns["SqlDataSourceName"].HeaderText = "服务器名";
this.dgvServerInfo.Columns["SqlDataSourceName"].DisplayIndex = 0;
this.dgvServerInfo.Columns["ServerName"].HeaderText = "服务器物理名称";
this.dgvServerInfo.Columns["ServerName"].DisplayIndex = 1;
this.dgvServerInfo.Columns["ServerName"].Visible = false;
this.dgvServerInfo.Columns["InstanceName"].HeaderText = "实例名";
this.dgvServerInfo.Columns["InstanceName"].DisplayIndex = 2;
this.dgvServerInfo.Columns["InstanceName"].Visible = false;
this.dgvServerInfo.Columns["IsClustered"].HeaderText = "群集信息";
this.dgvServerInfo.Columns["IsClustered"].DisplayIndex = 3;
this.dgvServerInfo.Columns["IsClustered"].Visible = false;
this.dgvServerInfo.Columns["IsClusteredCHS"].HeaderText = "属于群集";
this.dgvServerInfo.Columns["IsClusteredCHS"].DisplayIndex = 4;
this.dgvServerInfo.Columns["Version"].HeaderText = "版本";
this.dgvServerInfo.Columns["Version"].DisplayIndex = 5;
}
}
/// <summary>
/// 获取当前服务器上所有数据库名称
/// </summary>
private void GetDataBaseName()
{
// 显示提示信息
string msg = string.Format("正在获取服务器 [{0}] 上的数据库信息 ...", cboSqlDataSource.Text.Trim());
this.toolTip.ToolTipIcon = ToolTipIcon.Info;
this.toolTip.ToolTipTitle = "请稍候...";
Point showLocation = new Point(
this.lblServer.Left + 2,
this.lblServer.Top + this.lblServer.Height);
this.toolTip.Show(msg, this, showLocation, 1000);
// 查询服务器上所有数据库的 SQL 查询命令
string sqlTxt = "Select [Name] From [SysDatabases] Order By [Name]";
// 保存结果的 DataTable
DataTable dataBaseDt = new DataTable();
// 创建连接对象
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
// 执行查询
try
{
// 创建适配器对象
using (SqlDataAdapter adp = new SqlDataAdapter(sqlTxt, con))
{
// 将查询结果填充到 DataTable
adp.Fill(dataBaseDt);
}
}
catch { } // 不弹出异常消息
}
// 如果 DataTable 包含数据行
if (dataBaseDt.Rows.Count > 0)
{
// 创建窗体数据绑定对象
BindingSource source = new BindingSource();
source.DataSource = dataBaseDt;
// 将结果绑定到数据库列表
cboDataBaseName.DataSource = source;
cboDataBaseName.DisplayMember = "Name";
cboDataBaseName.ValueMember = "Name";
}
else
{
// 移除数据库列表
cboDataBaseName.DataSource = null;
}
}
/// <summary>
/// 获取连接字符串
/// </summary>
private string GetConnectionString()
{
// 重新创建连接字符串创建者
_connectionStringBuilder = new SqlConnectionStringBuilder();
// 获取服务器名称
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim()))
_connectionStringBuilder.DataSource = cboSqlDataSource.Text.Trim();
// 获取登录类型
if (rdoValidateBySQLServer.Checked)
{
if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
_connectionStringBuilder.UserID = txtUserName.Text.Trim();
if (!string.IsNullOrEmpty(txtPassword.Text.Trim()))
_connectionStringBuilder.Password = txtPassword.Text.Trim();
}
// 获取默认数据库
if (!string.IsNullOrEmpty(cboDataBaseName.Text.Trim())
|| !string.IsNullOrEmpty(txtDataBaseFilePath.Text.Trim())
|| !string.IsNullOrEmpty(txtLogicalName.Text.Trim()))
{
// 如果是附加一个数据库文件
if (rdoAttachADataBaseFile.Checked)
{
_connectionStringBuilder.AttachDBFilename = txtDataBaseFilePath.Text.Trim();
_connectionStringBuilder.InitialCatalog = txtLogicalName.Text.Trim();
}
else
_connectionStringBuilder.InitialCatalog = cboDataBaseName.Text.Trim();
}
// 调整连接字符串
if (rdoValidateByWindows.Checked)
_connectionStringBuilder.IntegratedSecurity = true;
// 返回连接字符串
return _connectionStringBuilder.ConnectionString;
}
#endregion
#region Public Methods
/// <summary>
/// 无参构造
/// </summary>
public frmConnectionConfig(string applicationName)
{
// 构建设计器控件
InitializeComponent();
// 保存当前应用程序名称
_applicationName = applicationName;
// 创建连接字符串创建者
_connectionStringBuilder = new SqlConnectionStringBuilder();
_connectionStringBuilder.IntegratedSecurity = true;
//_connectionStringBuilder.ApplicationName = _applicationName;
//_connectionStringBuilder.AsynchronousProcessing = true;
//_connectionStringBuilder.Encrypt = true;
}
#endregion
#region Event Handlers
/// <summary>
/// 数据源 列表下拉事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboSqlDataSource_DropDown(object sender, EventArgs e)
{
// 如果 数据源 列表条目为空
if (cboSqlDataSource.Items.Count == 0)
{
// 获取 本地网络所有 SQL Server 实例(数据源)
GetSqlDataSource();
}
}
/// <summary>
/// 数据库 列表获得焦点事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboDataBaseName_Enter(object sender, EventArgs e)
{
// 获取当前服务器上所有数据库名称
GetDataBaseName();
}
/// <summary>
/// 选择选项卡页事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tcServerInfo_Selecting(object sender, TabControlCancelEventArgs e)
{
// 如果 数据源 列表条目为空
if (cboSqlDataSource.Items.Count == 0 && e.TabPage == tpServerInfo)
{
// 获取 本地网络所有 SQL Server 实例(数据源)
GetSqlDataSource();
}
}
/// <summary>
/// [刷新]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRefresh_Click(object sender, EventArgs e)
{
// 获取 本地网络所有 SQL Server 实例(数据源)
GetSqlDataSource();
}
/// <summary>
/// [使用 SQL Server 身份验证]单选按钮 Checked 属性更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoValidateBySQLServer_CheckedChanged(object sender, EventArgs e)
{
if (rdoValidateBySQLServer.Checked)
{
_connectionStringBuilder.IntegratedSecurity = false;
lblUserName.Enabled = true;
txtUserName.Enabled = true;
lblPassword.Enabled = true;
txtPassword.Enabled = true;
if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
gbConnectToADataBase.Enabled = true;
else
gbConnectToADataBase.Enabled = false;
}
else
{
_connectionStringBuilder.IntegratedSecurity = true;
lblUserName.Enabled = false;
txtUserName.Enabled = false;
lblPassword.Enabled = false;
txtPassword.Enabled = false;
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim()))
gbConnectToADataBase.Enabled = true;
else
gbConnectToADataBase.Enabled = false;
}
}
/// <summary>
/// [附加一个数据库文件]单选按钮 Checked 属性更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoAttachADataBaseFile_CheckedChanged(object sender, EventArgs e)
{
if (rdoAttachADataBaseFile.Checked)
{
cboDataBaseName.Enabled = false;
txtDataBaseFilePath.Enabled = true;
btnBrowse.Enabled = true;
lblLogicalName.Enabled = true;
txtLogicalName.Enabled = true;
}
else
{
cboDataBaseName.Enabled = true;
txtDataBaseFilePath.Enabled = false;
btnBrowse.Enabled = false;
lblLogicalName.Enabled = false;
txtLogicalName.Enabled = false;
}
}
/// <summary>
/// 数据源 列表 Text 值更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboSqlDataSource_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim())
&& _connectionStringBuilder.IntegratedSecurity == true
|| !string.IsNullOrEmpty(txtUserName.Text.Trim())
&& _connectionStringBuilder.IntegratedSecurity == false)
{
gbConnectToADataBase.Enabled = true;
btnOK.Enabled = true;
}
else
{
gbConnectToADataBase.Enabled = false;
btnOK.Enabled = false;
}
}
/// <summary>
/// [用户名]文本框文本更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtUserName_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
gbConnectToADataBase.Enabled = true;
else
gbConnectToADataBase.Enabled = false;
}
/// <summary>
/// [测试连接]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTestConnection_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim()))
{
// 创建连接对象
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
try
{
// 打开数据库连接
con.Open();
// 给出用户提示
MessageBox.Show(
"测试连接成功。",
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(
ex.Message,
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
finally
{
// 关闭数据库连接
con.Close();
}
}
}
else
{
MessageBox.Show(
"无法测试此连接,因为没有指定服务器名称。",
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
/// <summary>
/// [确定]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
try
{
// 创建应用程序配置文件
string configFilePath = string.Format(@"{0}.config", Application.ExecutablePath);
Configuration configuration = null;
if (!File.Exists(configFilePath))
{
FileStream fs = null;
try
{
fs = new FileStream(configFilePath, FileMode.CreateNew);
fs.SetLength(0);
}
catch { } // 不弹出异常提示
finally
{
fs.Close();
}
}
configuration = ConfigurationManager.OpenExeConfiguration(configFilePath);
// configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// 遍历检验 ConnectionType 项是否存在
bool appSettingsExist = false;
foreach (KeyValueConfigurationElement element in configuration.AppSettings.Settings)
{
// 如果存在
if (element.Key == "ConnectionType")
{
// 标识存在
appSettingsExist = true;
break;
}
}
// 如果存在
if (appSettingsExist)
// 修改配置节点
configuration.AppSettings.Settings["ConnectionType"].Value = "SQLSERVER";
else
// 添加配置节点
configuration.AppSettings.Settings.Add("ConnectionType", "SQLSERVER");
// 遍历检验 SQLSERVER 项是否存在
bool connectionStringExist = false;
foreach (ConnectionStringSettings setting in configuration.ConnectionStrings.ConnectionStrings)
{
// 如果存在
if (setting.Name == "SQLSERVER")
{
// 标识存在
connectionStringExist = true;
}
}
// 如果存在
if (connectionStringExist)
{
// 修改配置节点
configuration.ConnectionStrings.ConnectionStrings["SQLSERVER"].ConnectionString =
GetConnectionString();
configuration.ConnectionStrings.ConnectionStrings["SQLSERVER"].ProviderName =
"System.Data.SqlClient";
}
else
{
// 添加连接字符串节点
configuration.ConnectionStrings.ConnectionStrings.Add(
new ConnectionStringSettings(
"SQLSERVER",
GetConnectionString(),
"System.Data.SqlClient"));
}
// 保存配置
configuration.SaveAs(
string.Format(@"{0}.config", Application.ExecutablePath.Replace(".EXE", ".exe")),
ConfigurationSaveMode.Minimal);
// 关闭窗体
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(
string.Format("保存数据库连接配置时发生以下错误:/r/n/r/n{0}", ex.Message),
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
/// <summary>
/// [取消]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// [浏览]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnBrowse_Click(object sender, EventArgs e)
{
OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Title = "选择 SQL Server 数据库文件";
ofDlg.Filter = "Microsoft SQL Server 数据库(*.mdf)|*.mdf|所有文件(*.*)|*.*";
ofDlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResult result = ofDlg.ShowDialog(this);
if (result == DialogResult.OK)
txtDataBaseFilePath.Text = ofDlg.FileName;
}
/// <summary>
/// [获取连接字符串]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetConnectionString_Click(object sender, EventArgs e)
{
this.txtConnectionString.Text = GetConnectionString();
}
#endregion
}
}
设计器源码:
namespace CodingMouse.CMCSharpSDK.UI.Forms
{
partial class frmConnectionConfig
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.cboSqlDataSource = new System.Windows.Forms.ComboBox();
this.tcServerInfo = new System.Windows.Forms.TabControl();
this.tpConnectionInfo = new System.Windows.Forms.TabPage();
this.gbConnectToADataBase = new System.Windows.Forms.GroupBox();
this.txtLogicalName = new System.Windows.Forms.TextBox();
this.lblLogicalName = new System.Windows.Forms.Label();
this.btnBrowse = new System.Windows.Forms.Button();
this.cboDataBaseName = new System.Windows.Forms.ComboBox();
this.txtDataBaseFilePath = new System.Windows.Forms.TextBox();
this.rdoAttachADataBaseFile = new System.Windows.Forms.RadioButton();
this.rdoSelectOrEnterADataBaseName = new System.Windows.Forms.RadioButton();
this.gbLogOnToTheServer = new System.Windows.Forms.GroupBox();
this.txtPassword = new System.Windows.Forms.TextBox();
this.txtUserName = new System.Windows.Forms.TextBox();
this.lblPassword = new System.Windows.Forms.Label();
this.lblUserName = new System.Windows.Forms.Label();
this.rdoValidateBySQLServer = new System.Windows.Forms.RadioButton();
this.rdoValidateByWindows = new System.Windows.Forms.RadioButton();
this.tpServerInfo = new System.Windows.Forms.TabPage();
this.dgvServerInfo = new System.Windows.Forms.DataGridView();
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
this.btnRefresh = new System.Windows.Forms.Button();
this.lblServer = new System.Windows.Forms.Label();
this.btnGetConnectionString = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.btnTestConnection = new System.Windows.Forms.Button();
this.lblSplit = new System.Windows.Forms.Label();
this.txtConnectionString = new System.Windows.Forms.TextBox();
this.tcServerInfo.SuspendLayout();
this.tpConnectionInfo.SuspendLayout();
this.gbConnectToADataBase.SuspendLayout();
this.gbLogOnToTheServer.SuspendLayout();
this.tpServerInfo.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvServerInfo)).BeginInit();
this.SuspendLayout();
//
// cboSqlDataSource
//
this.cboSqlDataSource.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cboSqlDataSource.FormattingEnabled = true;
this.cboSqlDataSource.Location = new System.Drawing.Point(12, 24);
this.cboSqlDataSource.Name = "cboSqlDataSource";
this.cboSqlDataSource.Size = new System.Drawing.Size(269, 20);
this.cboSqlDataSource.TabIndex = 1;
this.cboSqlDataSource.Leave += new System.EventHandler(this.cboSqlDataSource_Leave);
this.cboSqlDataSource.TextChanged += new System.EventHandler(this.cboSqlDataSource_TextChanged);
this.cboSqlDataSource.DropDown += new System.EventHandler(this.cboSqlDataSource_DropDown);
//
// tcServerInfo
//
this.tcServerInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tcServerInfo.Controls.Add(this.tpConnectionInfo);
this.tcServerInfo.Controls.Add(this.tpServerInfo);
this.tcServerInfo.HotTrack = true;
this.tcServerInfo.Location = new System.Drawing.Point(12, 50);
this.tcServerInfo.Name = "tcServerInfo";
this.tcServerInfo.SelectedIndex = 0;
this.tcServerInfo.ShowToolTips = true;
this.tcServerInfo.Size = new System.Drawing.Size(350, 304);
this.tcServerInfo.TabIndex = 3;
this.tcServerInfo.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tcServerInfo_Selecting);
//
// tpConnectionInfo
//
this.tpConnectionInfo.Controls.Add(this.gbConnectToADataBase);
this.tpConnectionInfo.Controls.Add(this.gbLogOnToTheServer);
this.tpConnectionInfo.Location = new System.Drawing.Point(4, 21);
this.tpConnectionInfo.Name = "tpConnectionInfo";
this.tpConnectionInfo.Padding = new System.Windows.Forms.Padding(3);
this.tpConnectionInfo.Size = new System.Drawing.Size(342, 279);
this.tpConnectionInfo.TabIndex = 0;
this.tpConnectionInfo.Text = "数据库连接信息";
this.tpConnectionInfo.UseVisualStyleBackColor = true;
//
// gbConnectToADataBase
//
this.gbConnectToADataBase.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gbConnectToADataBase.Controls.Add(this.txtLogicalName);
this.gbConnectToADataBase.Controls.Add(this.lblLogicalName);
this.gbConnectToADataBase.Controls.Add(this.btnBrowse);
this.gbConnectToADataBase.Controls.Add(this.cboDataBaseName);
this.gbConnectToADataBase.Controls.Add(this.txtDataBaseFilePath);
this.gbConnectToADataBase.Controls.Add(this.rdoAttachADataBaseFile);
this.gbConnectToADataBase.Controls.Add(this.rdoSelectOrEnterADataBaseName);
this.gbConnectToADataBase.Enabled = false;
this.gbConnectToADataBase.Location = new System.Drawing.Point(6, 129);
this.gbConnectToADataBase.Name = "gbConnectToADataBase";
this.gbConnectToADataBase.Size = new System.Drawing.Size(330, 144);
this.gbConnectToADataBase.TabIndex = 1;
this.gbConnectToADataBase.TabStop = false;
this.gbConnectToADataBase.Text = "连接到一个数据库";
//
// txtLogicalName
//
this.txtLogicalName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtLogicalName.Enabled = false;
this.txtLogicalName.Location = new System.Drawing.Point(6, 117);
this.txtLogicalName.Name = "txtLogicalName";
this.txtLogicalName.Size = new System.Drawing.Size(318, 21);
this.txtLogicalName.TabIndex = 6;
//
// lblLogicalName
//
this.lblLogicalName.AutoSize = true;
this.lblLogicalName.Enabled = false;
this.lblLogicalName.Location = new System.Drawing.Point(4, 102);
this.lblLogicalName.Name = "lblLogicalName";
this.lblLogicalName.Size = new System.Drawing.Size(65, 12);
this.lblLogicalName.TabIndex = 5;
this.lblLogicalName.Text = "逻辑名(&L):";
//
// btnBrowse
//
this.btnBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnBrowse.Enabled = false;
this.btnBrowse.Location = new System.Drawing.Point(244, 78);
this.btnBrowse.Name = "btnBrowse";
this.btnBrowse.Size = new System.Drawing.Size(80, 21);
this.btnBrowse.TabIndex = 4;
this.btnBrowse.Text = "浏览(&B)...";
this.btnBrowse.UseVisualStyleBackColor = true;
this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
//
// cboDataBaseName
//
this.cboDataBaseName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cboDataBaseName.FormattingEnabled = true;
this.cboDataBaseName.Location = new System.Drawing.Point(6, 36);
this.cboDataBaseName.Name = "cboDataBaseName";
this.cboDataBaseName.Size = new System.Drawing.Size(318, 20);
this.cboDataBaseName.TabIndex = 1;
this.cboDataBaseName.Enter += new System.EventHandler(this.cboDataBaseName_Enter);
//
// txtDataBaseFilePath
//
this.txtDataBaseFilePath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtDataBaseFilePath.Enabled = false;
this.txtDataBaseFilePath.Location = new System.Drawing.Point(6, 78);
this.txtDataBaseFilePath.Name = "txtDataBaseFilePath";
this.txtDataBaseFilePath.Size = new System.Drawing.Size(232, 21);
this.txtDataBaseFilePath.TabIndex = 3;
//
// rdoAttachADataBaseFile
//
this.rdoAttachADataBaseFile.AutoSize = true;
this.rdoAttachADataBaseFile.Location = new System.Drawing.Point(6, 62);
this.rdoAttachADataBaseFile.Name = "rdoAttachADataBaseFile";
this.rdoAttachADataBaseFile.Size = new System.Drawing.Size(155, 16);
this.rdoAttachADataBaseFile.TabIndex = 2;
this.rdoAttachADataBaseFile.Text = "附加一个数据库文件(&H):";
this.rdoAttachADataBaseFile.UseVisualStyleBackColor = true;
this.rdoAttachADataBaseFile.CheckedChanged += new System.EventHandler(this.rdoAttachADataBaseFile_CheckedChanged);
//
// rdoSelectOrEnterADataBaseName
//
this.rdoSelectOrEnterADataBaseName.AutoSize = true;
this.rdoSelectOrEnterADataBaseName.Checked = true;
this.rdoSelectOrEnterADataBaseName.Location = new System.Drawing.Point(6, 20);
this.rdoSelectOrEnterADataBaseName.Name = "rdoSelectOrEnterADataBaseName";
this.rdoSelectOrEnterADataBaseName.Size = new System.Drawing.Size(179, 16);
this.rdoSelectOrEnterADataBaseName.TabIndex = 0;
this.rdoSelectOrEnterADataBaseName.TabStop = true;
this.rdoSelectOrEnterADataBaseName.Text = "选择或输入一个数据库名(&D):";
this.rdoSelectOrEnterADataBaseName.UseVisualStyleBackColor = true;
//
// gbLogOnToTheServer
//
this.gbLogOnToTheServer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gbLogOnToTheServer.Controls.Add(this.txtPassword);
this.gbLogOnToTheServer.Controls.Add(this.txtUserName);
this.gbLogOnToTheServer.Controls.Add(this.lblPassword);
this.gbLogOnToTheServer.Controls.Add(this.lblUserName);
this.gbLogOnToTheServer.Controls.Add(this.rdoValidateBySQLServer);
this.gbLogOnToTheServer.Controls.Add(this.rdoValidateByWindows);
this.gbLogOnToTheServer.Location = new System.Drawing.Point(6, 6);
this.gbLogOnToTheServer.Name = "gbLogOnToTheServer";
this.gbLogOnToTheServer.Size = new System.Drawing.Size(330, 117);
this.gbLogOnToTheServer.TabIndex = 0;
this.gbLogOnToTheServer.TabStop = false;
this.gbLogOnToTheServer.Text = "登录到服务器";
//
// txtPassword
//
this.txtPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtPassword.Enabled = false;
this.txtPassword.Location = new System.Drawing.Point(93, 88);
this.txtPassword.Name = "txtPassword";
this.txtPassword.PasswordChar = '*';
this.txtPassword.Size = new System.Drawing.Size(231, 21);
this.txtPassword.TabIndex = 5;
this.txtPassword.TextChanged += new System.EventHandler(this.txtPassword_TextChanged);
//
// txtUserName
//
this.txtUserName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtUserName.Enabled = false;
this.txtUserName.Location = new System.Drawing.Point(93, 61);
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(231, 21);
this.txtUserName.TabIndex = 3;
this.txtUserName.TextChanged += new System.EventHandler(this.txtUserName_TextChanged);
//
// lblPassword
//
this.lblPassword.AutoSize = true;
this.lblPassword.Enabled = false;
this.lblPassword.Location = new System.Drawing.Point(22, 91);
this.lblPassword.Name = "lblPassword";
this.lblPassword.Size = new System.Drawing.Size(65, 12);
this.lblPassword.TabIndex = 4;
this.lblPassword.Text = "密 码(&P):";
//
// lblUserName
//
this.lblUserName.AutoSize = true;
this.lblUserName.Enabled = false;
this.lblUserName.Location = new System.Drawing.Point(22, 64);
this.lblUserName.Name = "lblUserName";
this.lblUserName.Size = new System.Drawing.Size(65, 12);
this.lblUserName.TabIndex = 2;
this.lblUserName.Text = "用户名(&U):";
//
// rdoValidateBySQLServer
//
this.rdoValidateBySQLServer.AutoSize = true;
this.rdoValidateBySQLServer.Location = new System.Drawing.Point(6, 42);
this.rdoValidateBySQLServer.Name = "rdoValidateBySQLServer";
this.rdoValidateBySQLServer.Size = new System.Drawing.Size(185, 16);
this.rdoValidateBySQLServer.TabIndex = 1;
this.rdoValidateBySQLServer.Text = "使用 SQL Server 身份验证(&Q)";
this.rdoValidateBySQLServer.UseVisualStyleBackColor = true;
this.rdoValidateBySQLServer.CheckedChanged += new System.EventHandler(this.rdoValidateBySQLServer_CheckedChanged);
//
// rdoValidateByWindows
//
this.rdoValidateByWindows.AutoSize = true;
this.rdoValidateByWindows.Checked = true;
this.rdoValidateByWindows.Location = new System.Drawing.Point(6, 20);
this.rdoValidateByWindows.Name = "rdoValidateByWindows";
this.rdoValidateByWindows.Size = new System.Drawing.Size(167, 16);
this.rdoValidateByWindows.TabIndex = 0;
this.rdoValidateByWindows.TabStop = true;
this.rdoValidateByWindows.Text = "使用 Windows 身份验证(&W)";
this.rdoValidateByWindows.UseVisualStyleBackColor = true;
//
// tpServerInfo
//
this.tpServerInfo.Controls.Add(this.dgvServerInfo);
this.tpServerInfo.Location = new System.Drawing.Point(4, 21);
this.tpServerInfo.Name = "tpServerInfo";
this.tpServerInfo.Padding = new System.Windows.Forms.Padding(3);
this.tpServerInfo.Size = new System.Drawing.Size(342, 279);
this.tpServerInfo.TabIndex = 1;
this.tpServerInfo.Text = "服务器详细信息";
this.tpServerInfo.UseVisualStyleBackColor = true;
//
// dgvServerInfo
//
this.dgvServerInfo.AllowUserToAddRows = false;
this.dgvServerInfo.AllowUserToDeleteRows = false;
this.dgvServerInfo.AllowUserToResizeRows = false;
this.dgvServerInfo.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvServerInfo.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvServerInfo.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvServerInfo.Location = new System.Drawing.Point(3, 3);
this.dgvServerInfo.MultiSelect = false;
this.dgvServerInfo.Name = "dgvServerInfo";
this.dgvServerInfo.ReadOnly = true;
this.dgvServerInfo.RowHeadersVisible = false;
this.dgvServerInfo.RowTemplate.Height = 23;
this.dgvServerInfo.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvServerInfo.Size = new System.Drawing.Size(336, 273);
this.dgvServerInfo.TabIndex = 0;
//
// toolTip
//
this.toolTip.ShowAlways = true;
//
// btnRefresh
//
this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnRefresh.Location = new System.Drawing.Point(287, 23);
this.btnRefresh.Name = "btnRefresh";
this.btnRefresh.Size = new System.Drawing.Size(75, 21);
this.btnRefresh.TabIndex = 2;
this.btnRefresh.Text = "刷新(&R)";
this.btnRefresh.UseVisualStyleBackColor = true;
this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
//
// lblServer
//
this.lblServer.AutoSize = true;
this.lblServer.Location = new System.Drawing.Point(10, 9);
this.lblServer.Name = "lblServer";
this.lblServer.Size = new System.Drawing.Size(77, 12);
this.lblServer.TabIndex = 0;
this.lblServer.Text = "服务器名(&E):";
//
// btnGetConnectionString
//
this.btnGetConnectionString.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnGetConnectionString.Enabled = false;
this.btnGetConnectionString.Location = new System.Drawing.Point(242, 360);
this.btnGetConnectionString.Name = "btnGetConnectionString";
this.btnGetConnectionString.Size = new System.Drawing.Size(120, 21);
this.btnGetConnectionString.TabIndex = 5;
this.btnGetConnectionString.Text = "获取连接字符串(&G)";
this.btnGetConnectionString.UseVisualStyleBackColor = true;
this.btnGetConnectionString.Click += new System.EventHandler(this.btnGetConnectionString_Click);
//
// btnCancel
//
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(287, 395);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 21);
this.btnCancel.TabIndex = 9;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// btnOK
//
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Enabled = false;
this.btnOK.Location = new System.Drawing.Point(206, 395);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(75, 21);
this.btnOK.TabIndex = 8;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnTestConnection
//
this.btnTestConnection.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btnTestConnection.Location = new System.Drawing.Point(12, 395);
this.btnTestConnection.Name = "btnTestConnection";
this.btnTestConnection.Size = new System.Drawing.Size(100, 21);
this.btnTestConnection.TabIndex = 7;
this.btnTestConnection.Text = "测试连接(&T)";
this.btnTestConnection.UseVisualStyleBackColor = true;
this.btnTestConnection.Click += new System.EventHandler(this.btnTestConnection_Click);
//
// lblSplit
//
this.lblSplit.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblSplit.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblSplit.Location = new System.Drawing.Point(12, 387);
this.lblSplit.Name = "lblSplit";
this.lblSplit.Size = new System.Drawing.Size(350, 2);
this.lblSplit.TabIndex = 6;
//
// txtConnectionString
//
this.txtConnectionString.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtConnectionString.Location = new System.Drawing.Point(12, 360);
this.txtConnectionString.Name = "txtConnectionString";
this.txtConnectionString.ReadOnly = true;
this.txtConnectionString.Size = new System.Drawing.Size(224, 21);
this.txtConnectionString.TabIndex = 4;
//
// frmConnectionConfig
//
this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(374, 428);
this.Controls.Add(this.txtConnectionString);
this.Controls.Add(this.lblSplit);
this.Controls.Add(this.btnTestConnection);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnGetConnectionString);
this.Controls.Add(this.btnRefresh);
this.Controls.Add(this.lblServer);
this.Controls.Add(this.tcServerInfo);
this.Controls.Add(this.cboSqlDataSource);
this.HelpButton = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(382, 455);
this.Name = "frmConnectionConfig";
this.ShowIcon = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "数据库连接配置";
this.tcServerInfo.ResumeLayout(false);
this.tpConnectionInfo.ResumeLayout(false);
this.gbConnectToADataBase.ResumeLayout(false);
this.gbConnectToADataBase.PerformLayout();
this.gbLogOnToTheServer.ResumeLayout(false);
this.gbLogOnToTheServer.PerformLayout();
this.tpServerInfo.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvServerInfo)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox cboSqlDataSource;
private System.Windows.Forms.TabControl tcServerInfo;
private System.Windows.Forms.TabPage tpConnectionInfo;
private System.Windows.Forms.TabPage tpServerInfo;
private System.Windows.Forms.DataGridView dgvServerInfo;
private System.Windows.Forms.ToolTip toolTip;
private System.Windows.Forms.Label lblServer;
private System.Windows.Forms.Button btnRefresh;
private System.Windows.Forms.GroupBox gbLogOnToTheServer;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.Label lblPassword;
private System.Windows.Forms.Label lblUserName;
private System.Windows.Forms.RadioButton rdoValidateBySQLServer;
private System.Windows.Forms.RadioButton rdoValidateByWindows;
private System.Windows.Forms.GroupBox gbConnectToADataBase;
private System.Windows.Forms.RadioButton rdoAttachADataBaseFile;
private System.Windows.Forms.RadioButton rdoSelectOrEnterADataBaseName;
private System.Windows.Forms.Button btnGetConnectionString;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnTestConnection;
private System.Windows.Forms.ComboBox cboDataBaseName;
private System.Windows.Forms.TextBox txtDataBaseFilePath;
private System.Windows.Forms.Button btnBrowse;
private System.Windows.Forms.TextBox txtLogicalName;
private System.Windows.Forms.Label lblLogicalName;
private System.Windows.Forms.Label lblSplit;
private System.Windows.Forms.TextBox txtConnectionString;
}
}
2008年12月20日
By CodingMouse
转载请注明出处:http://blog.csdn.net/CodingMouse/archive/2008/12/20/3565771.aspx
在C# WinForm 应用程序非常需要一个 SQL Server 连接配置界面,许多时候,因 SQL Server 服务器地址变更或 数据库登录账户 变更引起的连接失败等情况,客户就可能打电话“找麻烦”。既然这样,还不如提供一个可视化的配置界面,并在用户手册中说明使用方法,尽可能避免这种小问题带来的烦恼。为此,我将自己无聊时写的连接配置源码贴出来给初学者参考,以备不时之需!
想必大家都很熟悉VS服务器资源管理器中的【添加连接】对话框吧!下面是它的截图:
再看看我模仿这个对话框打造的WinForm程序SQL Server 连接配置界面:
呵呵!有几分相似吧!需要的朋友可以参考下面的源码。这份源码是完整的,粘贴到VS中即可使用。
窗体源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
namespace CodingMouse.CMCSharpSDK.UI.Forms
{
/// <summary>
/// 数据库连接配置界面
/// </summary>
public partial class frmConnectionConfig : Form
{
#region Private Members
/// <summary>
/// SQL Server 连接字符串创建者对象
/// </summary>
SqlConnectionStringBuilder _connectionStringBuilder = null;
/// <summary>
/// 当前应用程序名称
/// </summary>
string _applicationName;
#endregion
#region Private Methods
/// <summary>
/// 获取 本地网络所有 SQL Server 实例(数据源)
/// </summary>
private void GetSqlDataSource()
{
// 显示提示信息
string msg = "正在获取本地网络所有 SQL Server 服务器信息 ...";
this.toolTip.ToolTipIcon = ToolTipIcon.Info;
this.toolTip.ToolTipTitle = "请稍候...";
Point showLocation = new Point(
this.lblServer.Left + 2,
this.lblServer.Top + this.lblServer.Height);
this.toolTip.Show(msg, this, showLocation, 1000);
// 创建 提供了一种枚举本地网络内的所有可用 SQL Server 实例的机制 的实例
SqlDataSourceEnumerator sdsEnum = SqlDataSourceEnumerator.Instance;
// 调用 检索包含有关所有可见 SQL Server 2000 或 SQL Server 2005 实例的信息的 DataTable 的方法
DataTable serverDt = sdsEnum.GetDataSources();
// 创建新列以拼接 ServerName 以及 InstanceName 列的内容(以此构建连接字符串的 Server / Data Source 项)
DataColumn dcDataSource = new DataColumn("SqlDataSourceName", typeof(string));
// 将新列添加到 DataTable
serverDt.Columns.Add(dcDataSource);
// 创建新列以用中文方式显示 IsClustered 列内容
DataColumn dcIsClustered = new DataColumn("IsClusteredCHS", typeof(string));
// 将新列添加到 DataTable
serverDt.Columns.Add(dcIsClustered);
// 遍历 DataTable 并给新列赋予拼接后的值
foreach (DataRow dataRow in serverDt.Rows)
{
if (!string.IsNullOrEmpty(Convert.ToString(dataRow["InstanceName"])))
dataRow["SqlDataSourceName"] = string.Format(@"{0}/{1}",
Convert.ToString(dataRow["ServerName"]),
Convert.ToString(dataRow["InstanceName"]));
else
dataRow["SqlDataSourceName"] = string.Format(@"{0}",
Convert.ToString(dataRow["ServerName"]));
dataRow["IsClusteredCHS"] =
(Convert.ToString(dataRow["IsClustered"]).Trim().ToUpper() == "NO")
? "否" : ((Convert.ToString(dataRow["IsClustered"]).Trim().ToUpper() == "YES")
? "是" : dataRow["IsClustered"]);
}
// 如果包含数据行
if (serverDt.Rows.Count > 0)
{
// 创建窗体数据源封装类实例并封装 DataTable
BindingSource source = new BindingSource();
source.DataSource = serverDt;
// 设置 ComboBox 数据源
this.cboSqlDataSource.DataSource = source;
this.cboSqlDataSource.DisplayMember = "SqlDataSourceName";
this.cboSqlDataSource.ValueMember = "SqlDataSourceName";
// 设置 DataGridView 数据源
this.dgvServerInfo.DataSource = source;
// 设置中文列名
this.dgvServerInfo.Columns["SqlDataSourceName"].HeaderText = "服务器名";
this.dgvServerInfo.Columns["SqlDataSourceName"].DisplayIndex = 0;
this.dgvServerInfo.Columns["ServerName"].HeaderText = "服务器物理名称";
this.dgvServerInfo.Columns["ServerName"].DisplayIndex = 1;
this.dgvServerInfo.Columns["ServerName"].Visible = false;
this.dgvServerInfo.Columns["InstanceName"].HeaderText = "实例名";
this.dgvServerInfo.Columns["InstanceName"].DisplayIndex = 2;
this.dgvServerInfo.Columns["InstanceName"].Visible = false;
this.dgvServerInfo.Columns["IsClustered"].HeaderText = "群集信息";
this.dgvServerInfo.Columns["IsClustered"].DisplayIndex = 3;
this.dgvServerInfo.Columns["IsClustered"].Visible = false;
this.dgvServerInfo.Columns["IsClusteredCHS"].HeaderText = "属于群集";
this.dgvServerInfo.Columns["IsClusteredCHS"].DisplayIndex = 4;
this.dgvServerInfo.Columns["Version"].HeaderText = "版本";
this.dgvServerInfo.Columns["Version"].DisplayIndex = 5;
}
}
/// <summary>
/// 获取当前服务器上所有数据库名称
/// </summary>
private void GetDataBaseName()
{
// 显示提示信息
string msg = string.Format("正在获取服务器 [{0}] 上的数据库信息 ...", cboSqlDataSource.Text.Trim());
this.toolTip.ToolTipIcon = ToolTipIcon.Info;
this.toolTip.ToolTipTitle = "请稍候...";
Point showLocation = new Point(
this.lblServer.Left + 2,
this.lblServer.Top + this.lblServer.Height);
this.toolTip.Show(msg, this, showLocation, 1000);
// 查询服务器上所有数据库的 SQL 查询命令
string sqlTxt = "Select [Name] From [SysDatabases] Order By [Name]";
// 保存结果的 DataTable
DataTable dataBaseDt = new DataTable();
// 创建连接对象
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
// 执行查询
try
{
// 创建适配器对象
using (SqlDataAdapter adp = new SqlDataAdapter(sqlTxt, con))
{
// 将查询结果填充到 DataTable
adp.Fill(dataBaseDt);
}
}
catch { } // 不弹出异常消息
}
// 如果 DataTable 包含数据行
if (dataBaseDt.Rows.Count > 0)
{
// 创建窗体数据绑定对象
BindingSource source = new BindingSource();
source.DataSource = dataBaseDt;
// 将结果绑定到数据库列表
cboDataBaseName.DataSource = source;
cboDataBaseName.DisplayMember = "Name";
cboDataBaseName.ValueMember = "Name";
}
else
{
// 移除数据库列表
cboDataBaseName.DataSource = null;
}
}
/// <summary>
/// 获取连接字符串
/// </summary>
private string GetConnectionString()
{
// 重新创建连接字符串创建者
_connectionStringBuilder = new SqlConnectionStringBuilder();
// 获取服务器名称
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim()))
_connectionStringBuilder.DataSource = cboSqlDataSource.Text.Trim();
// 获取登录类型
if (rdoValidateBySQLServer.Checked)
{
if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
_connectionStringBuilder.UserID = txtUserName.Text.Trim();
if (!string.IsNullOrEmpty(txtPassword.Text.Trim()))
_connectionStringBuilder.Password = txtPassword.Text.Trim();
}
// 获取默认数据库
if (!string.IsNullOrEmpty(cboDataBaseName.Text.Trim())
|| !string.IsNullOrEmpty(txtDataBaseFilePath.Text.Trim())
|| !string.IsNullOrEmpty(txtLogicalName.Text.Trim()))
{
// 如果是附加一个数据库文件
if (rdoAttachADataBaseFile.Checked)
{
_connectionStringBuilder.AttachDBFilename = txtDataBaseFilePath.Text.Trim();
_connectionStringBuilder.InitialCatalog = txtLogicalName.Text.Trim();
}
else
_connectionStringBuilder.InitialCatalog = cboDataBaseName.Text.Trim();
}
// 调整连接字符串
if (rdoValidateByWindows.Checked)
_connectionStringBuilder.IntegratedSecurity = true;
// 返回连接字符串
return _connectionStringBuilder.ConnectionString;
}
#endregion
#region Public Methods
/// <summary>
/// 无参构造
/// </summary>
public frmConnectionConfig(string applicationName)
{
// 构建设计器控件
InitializeComponent();
// 保存当前应用程序名称
_applicationName = applicationName;
// 创建连接字符串创建者
_connectionStringBuilder = new SqlConnectionStringBuilder();
_connectionStringBuilder.IntegratedSecurity = true;
//_connectionStringBuilder.ApplicationName = _applicationName;
//_connectionStringBuilder.AsynchronousProcessing = true;
//_connectionStringBuilder.Encrypt = true;
}
#endregion
#region Event Handlers
/// <summary>
/// 数据源 列表下拉事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboSqlDataSource_DropDown(object sender, EventArgs e)
{
// 如果 数据源 列表条目为空
if (cboSqlDataSource.Items.Count == 0)
{
// 获取 本地网络所有 SQL Server 实例(数据源)
GetSqlDataSource();
}
}
/// <summary>
/// 数据库 列表获得焦点事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboDataBaseName_Enter(object sender, EventArgs e)
{
// 获取当前服务器上所有数据库名称
GetDataBaseName();
}
/// <summary>
/// 选择选项卡页事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tcServerInfo_Selecting(object sender, TabControlCancelEventArgs e)
{
// 如果 数据源 列表条目为空
if (cboSqlDataSource.Items.Count == 0 && e.TabPage == tpServerInfo)
{
// 获取 本地网络所有 SQL Server 实例(数据源)
GetSqlDataSource();
}
}
/// <summary>
/// [刷新]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRefresh_Click(object sender, EventArgs e)
{
// 获取 本地网络所有 SQL Server 实例(数据源)
GetSqlDataSource();
}
/// <summary>
/// [使用 SQL Server 身份验证]单选按钮 Checked 属性更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoValidateBySQLServer_CheckedChanged(object sender, EventArgs e)
{
if (rdoValidateBySQLServer.Checked)
{
_connectionStringBuilder.IntegratedSecurity = false;
lblUserName.Enabled = true;
txtUserName.Enabled = true;
lblPassword.Enabled = true;
txtPassword.Enabled = true;
if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
gbConnectToADataBase.Enabled = true;
else
gbConnectToADataBase.Enabled = false;
}
else
{
_connectionStringBuilder.IntegratedSecurity = true;
lblUserName.Enabled = false;
txtUserName.Enabled = false;
lblPassword.Enabled = false;
txtPassword.Enabled = false;
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim()))
gbConnectToADataBase.Enabled = true;
else
gbConnectToADataBase.Enabled = false;
}
}
/// <summary>
/// [附加一个数据库文件]单选按钮 Checked 属性更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoAttachADataBaseFile_CheckedChanged(object sender, EventArgs e)
{
if (rdoAttachADataBaseFile.Checked)
{
cboDataBaseName.Enabled = false;
txtDataBaseFilePath.Enabled = true;
btnBrowse.Enabled = true;
lblLogicalName.Enabled = true;
txtLogicalName.Enabled = true;
}
else
{
cboDataBaseName.Enabled = true;
txtDataBaseFilePath.Enabled = false;
btnBrowse.Enabled = false;
lblLogicalName.Enabled = false;
txtLogicalName.Enabled = false;
}
}
/// <summary>
/// 数据源 列表 Text 值更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboSqlDataSource_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim())
&& _connectionStringBuilder.IntegratedSecurity == true
|| !string.IsNullOrEmpty(txtUserName.Text.Trim())
&& _connectionStringBuilder.IntegratedSecurity == false)
{
gbConnectToADataBase.Enabled = true;
btnOK.Enabled = true;
}
else
{
gbConnectToADataBase.Enabled = false;
btnOK.Enabled = false;
}
}
/// <summary>
/// [用户名]文本框文本更改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtUserName_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
gbConnectToADataBase.Enabled = true;
else
gbConnectToADataBase.Enabled = false;
}
/// <summary>
/// [测试连接]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTestConnection_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(cboSqlDataSource.Text.Trim()))
{
// 创建连接对象
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
try
{
// 打开数据库连接
con.Open();
// 给出用户提示
MessageBox.Show(
"测试连接成功。",
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(
ex.Message,
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
finally
{
// 关闭数据库连接
con.Close();
}
}
}
else
{
MessageBox.Show(
"无法测试此连接,因为没有指定服务器名称。",
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
/// <summary>
/// [确定]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
try
{
// 创建应用程序配置文件
string configFilePath = string.Format(@"{0}.config", Application.ExecutablePath);
Configuration configuration = null;
if (!File.Exists(configFilePath))
{
FileStream fs = null;
try
{
fs = new FileStream(configFilePath, FileMode.CreateNew);
fs.SetLength(0);
}
catch { } // 不弹出异常提示
finally
{
fs.Close();
}
}
configuration = ConfigurationManager.OpenExeConfiguration(configFilePath);
// configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// 遍历检验 ConnectionType 项是否存在
bool appSettingsExist = false;
foreach (KeyValueConfigurationElement element in configuration.AppSettings.Settings)
{
// 如果存在
if (element.Key == "ConnectionType")
{
// 标识存在
appSettingsExist = true;
break;
}
}
// 如果存在
if (appSettingsExist)
// 修改配置节点
configuration.AppSettings.Settings["ConnectionType"].Value = "SQLSERVER";
else
// 添加配置节点
configuration.AppSettings.Settings.Add("ConnectionType", "SQLSERVER");
// 遍历检验 SQLSERVER 项是否存在
bool connectionStringExist = false;
foreach (ConnectionStringSettings setting in configuration.ConnectionStrings.ConnectionStrings)
{
// 如果存在
if (setting.Name == "SQLSERVER")
{
// 标识存在
connectionStringExist = true;
}
}
// 如果存在
if (connectionStringExist)
{
// 修改配置节点
configuration.ConnectionStrings.ConnectionStrings["SQLSERVER"].ConnectionString =
GetConnectionString();
configuration.ConnectionStrings.ConnectionStrings["SQLSERVER"].ProviderName =
"System.Data.SqlClient";
}
else
{
// 添加连接字符串节点
configuration.ConnectionStrings.ConnectionStrings.Add(
new ConnectionStringSettings(
"SQLSERVER",
GetConnectionString(),
"System.Data.SqlClient"));
}
// 保存配置
configuration.SaveAs(
string.Format(@"{0}.config", Application.ExecutablePath.Replace(".EXE", ".exe")),
ConfigurationSaveMode.Minimal);
// 关闭窗体
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(
string.Format("保存数据库连接配置时发生以下错误:/r/n/r/n{0}", ex.Message),
this.Text,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
/// <summary>
/// [取消]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// [浏览]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnBrowse_Click(object sender, EventArgs e)
{
OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Title = "选择 SQL Server 数据库文件";
ofDlg.Filter = "Microsoft SQL Server 数据库(*.mdf)|*.mdf|所有文件(*.*)|*.*";
ofDlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResult result = ofDlg.ShowDialog(this);
if (result == DialogResult.OK)
txtDataBaseFilePath.Text = ofDlg.FileName;
}
/// <summary>
/// [获取连接字符串]按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetConnectionString_Click(object sender, EventArgs e)
{
this.txtConnectionString.Text = GetConnectionString();
}
#endregion
}
}
设计器源码:
namespace CodingMouse.CMCSharpSDK.UI.Forms
{
partial class frmConnectionConfig
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.cboSqlDataSource = new System.Windows.Forms.ComboBox();
this.tcServerInfo = new System.Windows.Forms.TabControl();
this.tpConnectionInfo = new System.Windows.Forms.TabPage();
this.gbConnectToADataBase = new System.Windows.Forms.GroupBox();
this.txtLogicalName = new System.Windows.Forms.TextBox();
this.lblLogicalName = new System.Windows.Forms.Label();
this.btnBrowse = new System.Windows.Forms.Button();
this.cboDataBaseName = new System.Windows.Forms.ComboBox();
this.txtDataBaseFilePath = new System.Windows.Forms.TextBox();
this.rdoAttachADataBaseFile = new System.Windows.Forms.RadioButton();
this.rdoSelectOrEnterADataBaseName = new System.Windows.Forms.RadioButton();
this.gbLogOnToTheServer = new System.Windows.Forms.GroupBox();
this.txtPassword = new System.Windows.Forms.TextBox();
this.txtUserName = new System.Windows.Forms.TextBox();
this.lblPassword = new System.Windows.Forms.Label();
this.lblUserName = new System.Windows.Forms.Label();
this.rdoValidateBySQLServer = new System.Windows.Forms.RadioButton();
this.rdoValidateByWindows = new System.Windows.Forms.RadioButton();
this.tpServerInfo = new System.Windows.Forms.TabPage();
this.dgvServerInfo = new System.Windows.Forms.DataGridView();
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
this.btnRefresh = new System.Windows.Forms.Button();
this.lblServer = new System.Windows.Forms.Label();
this.btnGetConnectionString = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.btnTestConnection = new System.Windows.Forms.Button();
this.lblSplit = new System.Windows.Forms.Label();
this.txtConnectionString = new System.Windows.Forms.TextBox();
this.tcServerInfo.SuspendLayout();
this.tpConnectionInfo.SuspendLayout();
this.gbConnectToADataBase.SuspendLayout();
this.gbLogOnToTheServer.SuspendLayout();
this.tpServerInfo.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvServerInfo)).BeginInit();
this.SuspendLayout();
//
// cboSqlDataSource
//
this.cboSqlDataSource.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cboSqlDataSource.FormattingEnabled = true;
this.cboSqlDataSource.Location = new System.Drawing.Point(12, 24);
this.cboSqlDataSource.Name = "cboSqlDataSource";
this.cboSqlDataSource.Size = new System.Drawing.Size(269, 20);
this.cboSqlDataSource.TabIndex = 1;
this.cboSqlDataSource.Leave += new System.EventHandler(this.cboSqlDataSource_Leave);
this.cboSqlDataSource.TextChanged += new System.EventHandler(this.cboSqlDataSource_TextChanged);
this.cboSqlDataSource.DropDown += new System.EventHandler(this.cboSqlDataSource_DropDown);
//
// tcServerInfo
//
this.tcServerInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tcServerInfo.Controls.Add(this.tpConnectionInfo);
this.tcServerInfo.Controls.Add(this.tpServerInfo);
this.tcServerInfo.HotTrack = true;
this.tcServerInfo.Location = new System.Drawing.Point(12, 50);
this.tcServerInfo.Name = "tcServerInfo";
this.tcServerInfo.SelectedIndex = 0;
this.tcServerInfo.ShowToolTips = true;
this.tcServerInfo.Size = new System.Drawing.Size(350, 304);
this.tcServerInfo.TabIndex = 3;
this.tcServerInfo.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tcServerInfo_Selecting);
//
// tpConnectionInfo
//
this.tpConnectionInfo.Controls.Add(this.gbConnectToADataBase);
this.tpConnectionInfo.Controls.Add(this.gbLogOnToTheServer);
this.tpConnectionInfo.Location = new System.Drawing.Point(4, 21);
this.tpConnectionInfo.Name = "tpConnectionInfo";
this.tpConnectionInfo.Padding = new System.Windows.Forms.Padding(3);
this.tpConnectionInfo.Size = new System.Drawing.Size(342, 279);
this.tpConnectionInfo.TabIndex = 0;
this.tpConnectionInfo.Text = "数据库连接信息";
this.tpConnectionInfo.UseVisualStyleBackColor = true;
//
// gbConnectToADataBase
//
this.gbConnectToADataBase.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gbConnectToADataBase.Controls.Add(this.txtLogicalName);
this.gbConnectToADataBase.Controls.Add(this.lblLogicalName);
this.gbConnectToADataBase.Controls.Add(this.btnBrowse);
this.gbConnectToADataBase.Controls.Add(this.cboDataBaseName);
this.gbConnectToADataBase.Controls.Add(this.txtDataBaseFilePath);
this.gbConnectToADataBase.Controls.Add(this.rdoAttachADataBaseFile);
this.gbConnectToADataBase.Controls.Add(this.rdoSelectOrEnterADataBaseName);
this.gbConnectToADataBase.Enabled = false;
this.gbConnectToADataBase.Location = new System.Drawing.Point(6, 129);
this.gbConnectToADataBase.Name = "gbConnectToADataBase";
this.gbConnectToADataBase.Size = new System.Drawing.Size(330, 144);
this.gbConnectToADataBase.TabIndex = 1;
this.gbConnectToADataBase.TabStop = false;
this.gbConnectToADataBase.Text = "连接到一个数据库";
//
// txtLogicalName
//
this.txtLogicalName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtLogicalName.Enabled = false;
this.txtLogicalName.Location = new System.Drawing.Point(6, 117);
this.txtLogicalName.Name = "txtLogicalName";
this.txtLogicalName.Size = new System.Drawing.Size(318, 21);
this.txtLogicalName.TabIndex = 6;
//
// lblLogicalName
//
this.lblLogicalName.AutoSize = true;
this.lblLogicalName.Enabled = false;
this.lblLogicalName.Location = new System.Drawing.Point(4, 102);
this.lblLogicalName.Name = "lblLogicalName";
this.lblLogicalName.Size = new System.Drawing.Size(65, 12);
this.lblLogicalName.TabIndex = 5;
this.lblLogicalName.Text = "逻辑名(&L):";
//
// btnBrowse
//
this.btnBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnBrowse.Enabled = false;
this.btnBrowse.Location = new System.Drawing.Point(244, 78);
this.btnBrowse.Name = "btnBrowse";
this.btnBrowse.Size = new System.Drawing.Size(80, 21);
this.btnBrowse.TabIndex = 4;
this.btnBrowse.Text = "浏览(&B)...";
this.btnBrowse.UseVisualStyleBackColor = true;
this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
//
// cboDataBaseName
//
this.cboDataBaseName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cboDataBaseName.FormattingEnabled = true;
this.cboDataBaseName.Location = new System.Drawing.Point(6, 36);
this.cboDataBaseName.Name = "cboDataBaseName";
this.cboDataBaseName.Size = new System.Drawing.Size(318, 20);
this.cboDataBaseName.TabIndex = 1;
this.cboDataBaseName.Enter += new System.EventHandler(this.cboDataBaseName_Enter);
//
// txtDataBaseFilePath
//
this.txtDataBaseFilePath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtDataBaseFilePath.Enabled = false;
this.txtDataBaseFilePath.Location = new System.Drawing.Point(6, 78);
this.txtDataBaseFilePath.Name = "txtDataBaseFilePath";
this.txtDataBaseFilePath.Size = new System.Drawing.Size(232, 21);
this.txtDataBaseFilePath.TabIndex = 3;
//
// rdoAttachADataBaseFile
//
this.rdoAttachADataBaseFile.AutoSize = true;
this.rdoAttachADataBaseFile.Location = new System.Drawing.Point(6, 62);
this.rdoAttachADataBaseFile.Name = "rdoAttachADataBaseFile";
this.rdoAttachADataBaseFile.Size = new System.Drawing.Size(155, 16);
this.rdoAttachADataBaseFile.TabIndex = 2;
this.rdoAttachADataBaseFile.Text = "附加一个数据库文件(&H):";
this.rdoAttachADataBaseFile.UseVisualStyleBackColor = true;
this.rdoAttachADataBaseFile.CheckedChanged += new System.EventHandler(this.rdoAttachADataBaseFile_CheckedChanged);
//
// rdoSelectOrEnterADataBaseName
//
this.rdoSelectOrEnterADataBaseName.AutoSize = true;
this.rdoSelectOrEnterADataBaseName.Checked = true;
this.rdoSelectOrEnterADataBaseName.Location = new System.Drawing.Point(6, 20);
this.rdoSelectOrEnterADataBaseName.Name = "rdoSelectOrEnterADataBaseName";
this.rdoSelectOrEnterADataBaseName.Size = new System.Drawing.Size(179, 16);
this.rdoSelectOrEnterADataBaseName.TabIndex = 0;
this.rdoSelectOrEnterADataBaseName.TabStop = true;
this.rdoSelectOrEnterADataBaseName.Text = "选择或输入一个数据库名(&D):";
this.rdoSelectOrEnterADataBaseName.UseVisualStyleBackColor = true;
//
// gbLogOnToTheServer
//
this.gbLogOnToTheServer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gbLogOnToTheServer.Controls.Add(this.txtPassword);
this.gbLogOnToTheServer.Controls.Add(this.txtUserName);
this.gbLogOnToTheServer.Controls.Add(this.lblPassword);
this.gbLogOnToTheServer.Controls.Add(this.lblUserName);
this.gbLogOnToTheServer.Controls.Add(this.rdoValidateBySQLServer);
this.gbLogOnToTheServer.Controls.Add(this.rdoValidateByWindows);
this.gbLogOnToTheServer.Location = new System.Drawing.Point(6, 6);
this.gbLogOnToTheServer.Name = "gbLogOnToTheServer";
this.gbLogOnToTheServer.Size = new System.Drawing.Size(330, 117);
this.gbLogOnToTheServer.TabIndex = 0;
this.gbLogOnToTheServer.TabStop = false;
this.gbLogOnToTheServer.Text = "登录到服务器";
//
// txtPassword
//
this.txtPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtPassword.Enabled = false;
this.txtPassword.Location = new System.Drawing.Point(93, 88);
this.txtPassword.Name = "txtPassword";
this.txtPassword.PasswordChar = '*';
this.txtPassword.Size = new System.Drawing.Size(231, 21);
this.txtPassword.TabIndex = 5;
this.txtPassword.TextChanged += new System.EventHandler(this.txtPassword_TextChanged);
//
// txtUserName
//
this.txtUserName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtUserName.Enabled = false;
this.txtUserName.Location = new System.Drawing.Point(93, 61);
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(231, 21);
this.txtUserName.TabIndex = 3;
this.txtUserName.TextChanged += new System.EventHandler(this.txtUserName_TextChanged);
//
// lblPassword
//
this.lblPassword.AutoSize = true;
this.lblPassword.Enabled = false;
this.lblPassword.Location = new System.Drawing.Point(22, 91);
this.lblPassword.Name = "lblPassword";
this.lblPassword.Size = new System.Drawing.Size(65, 12);
this.lblPassword.TabIndex = 4;
this.lblPassword.Text = "密 码(&P):";
//
// lblUserName
//
this.lblUserName.AutoSize = true;
this.lblUserName.Enabled = false;
this.lblUserName.Location = new System.Drawing.Point(22, 64);
this.lblUserName.Name = "lblUserName";
this.lblUserName.Size = new System.Drawing.Size(65, 12);
this.lblUserName.TabIndex = 2;
this.lblUserName.Text = "用户名(&U):";
//
// rdoValidateBySQLServer
//
this.rdoValidateBySQLServer.AutoSize = true;
this.rdoValidateBySQLServer.Location = new System.Drawing.Point(6, 42);
this.rdoValidateBySQLServer.Name = "rdoValidateBySQLServer";
this.rdoValidateBySQLServer.Size = new System.Drawing.Size(185, 16);
this.rdoValidateBySQLServer.TabIndex = 1;
this.rdoValidateBySQLServer.Text = "使用 SQL Server 身份验证(&Q)";
this.rdoValidateBySQLServer.UseVisualStyleBackColor = true;
this.rdoValidateBySQLServer.CheckedChanged += new System.EventHandler(this.rdoValidateBySQLServer_CheckedChanged);
//
// rdoValidateByWindows
//
this.rdoValidateByWindows.AutoSize = true;
this.rdoValidateByWindows.Checked = true;
this.rdoValidateByWindows.Location = new System.Drawing.Point(6, 20);
this.rdoValidateByWindows.Name = "rdoValidateByWindows";
this.rdoValidateByWindows.Size = new System.Drawing.Size(167, 16);
this.rdoValidateByWindows.TabIndex = 0;
this.rdoValidateByWindows.TabStop = true;
this.rdoValidateByWindows.Text = "使用 Windows 身份验证(&W)";
this.rdoValidateByWindows.UseVisualStyleBackColor = true;
//
// tpServerInfo
//
this.tpServerInfo.Controls.Add(this.dgvServerInfo);
this.tpServerInfo.Location = new System.Drawing.Point(4, 21);
this.tpServerInfo.Name = "tpServerInfo";
this.tpServerInfo.Padding = new System.Windows.Forms.Padding(3);
this.tpServerInfo.Size = new System.Drawing.Size(342, 279);
this.tpServerInfo.TabIndex = 1;
this.tpServerInfo.Text = "服务器详细信息";
this.tpServerInfo.UseVisualStyleBackColor = true;
//
// dgvServerInfo
//
this.dgvServerInfo.AllowUserToAddRows = false;
this.dgvServerInfo.AllowUserToDeleteRows = false;
this.dgvServerInfo.AllowUserToResizeRows = false;
this.dgvServerInfo.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvServerInfo.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvServerInfo.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvServerInfo.Location = new System.Drawing.Point(3, 3);
this.dgvServerInfo.MultiSelect = false;
this.dgvServerInfo.Name = "dgvServerInfo";
this.dgvServerInfo.ReadOnly = true;
this.dgvServerInfo.RowHeadersVisible = false;
this.dgvServerInfo.RowTemplate.Height = 23;
this.dgvServerInfo.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvServerInfo.Size = new System.Drawing.Size(336, 273);
this.dgvServerInfo.TabIndex = 0;
//
// toolTip
//
this.toolTip.ShowAlways = true;
//
// btnRefresh
//
this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnRefresh.Location = new System.Drawing.Point(287, 23);
this.btnRefresh.Name = "btnRefresh";
this.btnRefresh.Size = new System.Drawing.Size(75, 21);
this.btnRefresh.TabIndex = 2;
this.btnRefresh.Text = "刷新(&R)";
this.btnRefresh.UseVisualStyleBackColor = true;
this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
//
// lblServer
//
this.lblServer.AutoSize = true;
this.lblServer.Location = new System.Drawing.Point(10, 9);
this.lblServer.Name = "lblServer";
this.lblServer.Size = new System.Drawing.Size(77, 12);
this.lblServer.TabIndex = 0;
this.lblServer.Text = "服务器名(&E):";
//
// btnGetConnectionString
//
this.btnGetConnectionString.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnGetConnectionString.Enabled = false;
this.btnGetConnectionString.Location = new System.Drawing.Point(242, 360);
this.btnGetConnectionString.Name = "btnGetConnectionString";
this.btnGetConnectionString.Size = new System.Drawing.Size(120, 21);
this.btnGetConnectionString.TabIndex = 5;
this.btnGetConnectionString.Text = "获取连接字符串(&G)";
this.btnGetConnectionString.UseVisualStyleBackColor = true;
this.btnGetConnectionString.Click += new System.EventHandler(this.btnGetConnectionString_Click);
//
// btnCancel
//
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(287, 395);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 21);
this.btnCancel.TabIndex = 9;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// btnOK
//
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Enabled = false;
this.btnOK.Location = new System.Drawing.Point(206, 395);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(75, 21);
this.btnOK.TabIndex = 8;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnTestConnection
//
this.btnTestConnection.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btnTestConnection.Location = new System.Drawing.Point(12, 395);
this.btnTestConnection.Name = "btnTestConnection";
this.btnTestConnection.Size = new System.Drawing.Size(100, 21);
this.btnTestConnection.TabIndex = 7;
this.btnTestConnection.Text = "测试连接(&T)";
this.btnTestConnection.UseVisualStyleBackColor = true;
this.btnTestConnection.Click += new System.EventHandler(this.btnTestConnection_Click);
//
// lblSplit
//
this.lblSplit.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblSplit.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblSplit.Location = new System.Drawing.Point(12, 387);
this.lblSplit.Name = "lblSplit";
this.lblSplit.Size = new System.Drawing.Size(350, 2);
this.lblSplit.TabIndex = 6;
//
// txtConnectionString
//
this.txtConnectionString.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtConnectionString.Location = new System.Drawing.Point(12, 360);
this.txtConnectionString.Name = "txtConnectionString";
this.txtConnectionString.ReadOnly = true;
this.txtConnectionString.Size = new System.Drawing.Size(224, 21);
this.txtConnectionString.TabIndex = 4;
//
// frmConnectionConfig
//
this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(374, 428);
this.Controls.Add(this.txtConnectionString);
this.Controls.Add(this.lblSplit);
this.Controls.Add(this.btnTestConnection);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnGetConnectionString);
this.Controls.Add(this.btnRefresh);
this.Controls.Add(this.lblServer);
this.Controls.Add(this.tcServerInfo);
this.Controls.Add(this.cboSqlDataSource);
this.HelpButton = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(382, 455);
this.Name = "frmConnectionConfig";
this.ShowIcon = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "数据库连接配置";
this.tcServerInfo.ResumeLayout(false);
this.tpConnectionInfo.ResumeLayout(false);
this.gbConnectToADataBase.ResumeLayout(false);
this.gbConnectToADataBase.PerformLayout();
this.gbLogOnToTheServer.ResumeLayout(false);
this.gbLogOnToTheServer.PerformLayout();
this.tpServerInfo.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvServerInfo)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox cboSqlDataSource;
private System.Windows.Forms.TabControl tcServerInfo;
private System.Windows.Forms.TabPage tpConnectionInfo;
private System.Windows.Forms.TabPage tpServerInfo;
private System.Windows.Forms.DataGridView dgvServerInfo;
private System.Windows.Forms.ToolTip toolTip;
private System.Windows.Forms.Label lblServer;
private System.Windows.Forms.Button btnRefresh;
private System.Windows.Forms.GroupBox gbLogOnToTheServer;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.Label lblPassword;
private System.Windows.Forms.Label lblUserName;
private System.Windows.Forms.RadioButton rdoValidateBySQLServer;
private System.Windows.Forms.RadioButton rdoValidateByWindows;
private System.Windows.Forms.GroupBox gbConnectToADataBase;
private System.Windows.Forms.RadioButton rdoAttachADataBaseFile;
private System.Windows.Forms.RadioButton rdoSelectOrEnterADataBaseName;
private System.Windows.Forms.Button btnGetConnectionString;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnTestConnection;
private System.Windows.Forms.ComboBox cboDataBaseName;
private System.Windows.Forms.TextBox txtDataBaseFilePath;
private System.Windows.Forms.Button btnBrowse;
private System.Windows.Forms.TextBox txtLogicalName;
private System.Windows.Forms.Label lblLogicalName;
private System.Windows.Forms.Label lblSplit;
private System.Windows.Forms.TextBox txtConnectionString;
}
}
2008年12月20日
By CodingMouse
相关文章推荐
- 打造自己的 C# WinForm 应用程序的 SQL Server 连接配置界面
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序
- 使用Flash和C# WinForm配合打造界面漂亮的应用程序
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
- C# WinForm 应用程序的 SQL Server 连接配置界面 动态库
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
- 4行C#代码打造专业数据库连接配置界面
- 4行C#代码打造专业数据库连接配置界面
- (1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)
- C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
- C# WinForm程序的App.Config数据库连接配置文件
- C#_WinForm程序的App.Config数据库连接配置文件
- C# WinForm程序App.Config数据库连接配置文件的使用过程
- C# 测试SQL数据库连接时 winform 界面如何实时刷新控件
- C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
- Linux下的C#编程——配置开发环境、连接MySQL数据库、图形化界面编程
- C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
- C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部