C# WinForm 应用程序的 SQL Server 连接配置界面 动态库
转载请注明来源:http://blog.csdn.net/fengyan19822008/archive/2009/12/03/4929961.aspx
源码已经上传:http://download.csdn.net/source/1868785
作者:Bob 发布日期:2009-12-03
--------------------------------------------------------------------------------
管理系统或数据库应用系统中经常用到的就是数据库连接,程序启动前需要检查数据库连接,环境的更改、软件的重新发布,每次修改app.confige给实施带来很大的麻烦。
模仿VS中添加数据库连接的界面,写了一个自己的动态库。检测配置文件中连接字符串是否正确,如不正确,弹出可视界面配置即可,软件维护或客服人员,只需电话即可完成对客户的指导。
下面是程序运行时的截图:
程序代码如下:
view plaincopy to clipboardprint?
/// <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.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.cmbSeverName = new System.Windows.Forms.ComboBox();
this.btnReGetServerName = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.chkSavePwd = new System.Windows.Forms.CheckBox();
this.txtPwd = new System.Windows.Forms.TextBox();
this.txtUserName = new System.Windows.Forms.TextBox();
this.lblPwd = new System.Windows.Forms.Label();
this.lblUserName = new System.Windows.Forms.Label();
this.rbQCheck = new System.Windows.Forms.RadioButton();
this.rbWCheck = new System.Windows.Forms.RadioButton();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label5 = new System.Windows.Forms.Label();
this.cmbDataBase = new System.Windows.Forms.ComboBox();
this.label6 = new System.Windows.Forms.Label();
this.btnTestConnect = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(16, 15);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(205, 20);
this.label1.TabIndex = 0;
this.label1.Text = "输入信息以连接到选定的数据源";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(17, 46);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(97, 20);
this.label2.TabIndex = 1;
this.label2.Text = "服务器名(&E):";
//
// cmbSeverName
//
this.cmbSeverName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbSeverName.FormattingEnabled = true;
this.cmbSeverName.Location = new System.Drawing.Point(22, 72);
this.cmbSeverName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.cmbSeverName.Name = "cmbSeverName";
this.cmbSeverName.Size = new System.Drawing.Size(343, 28);
this.cmbSeverName.TabIndex = 2;
this.cmbSeverName.SelectedValueChanged += new System.EventHandler(this.cmbSeverName_SelectedValueChanged);
this.cmbSeverName.DropDown += new System.EventHandler(this.cmbSeverName_DropDown);
this.cmbSeverName.Click += new System.EventHandler(this.cmbSeverName_Click);
//
// btnReGetServerName
//
this.btnReGetServerName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReGetServerName.Location = new System.Drawing.Point(374, 72);
this.btnReGetServerName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnReGetServerName.Name = "btnReGetServerName";
this.btnReGetServerName.Size = new System.Drawing.Size(109, 28);
this.btnReGetServerName.TabIndex = 3;
this.btnReGetServerName.Text = "刷新(&R)";
this.btnReGetServerName.UseVisualStyleBackColor = true;
this.btnReGetServerName.Click += new System.EventHandler(this.btnReGetServerName_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.chkSavePwd);
this.groupBox1.Controls.Add(this.txtPwd);
this.groupBox1.Controls.Add(this.txtUserName);
this.groupBox1.Controls.Add(this.lblPwd);
this.groupBox1.Controls.Add(this.lblUserName);
this.groupBox1.Controls.Add(this.rbQCheck);
this.groupBox1.Controls.Add(this.rbWCheck);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(23, 110);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox1.Size = new System.Drawing.Size(460, 224);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "登陆到服务器";
//
// chkSavePwd
//
this.chkSavePwd.AutoSize = true;
this.chkSavePwd.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chkSavePwd.Location = new System.Drawing.Point(121, 190);
this.chkSavePwd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.chkSavePwd.Name = "chkSavePwd";
this.chkSavePwd.Size = new System.Drawing.Size(84, 24);
this.chkSavePwd.TabIndex = 5;
this.chkSavePwd.Text = "保存密码";
this.chkSavePwd.UseVisualStyleBackColor = true;
this.chkSavePwd.Visible = false;
//
// txtPwd
//
this.txtPwd.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPwd.Location = new System.Drawing.Point(121, 154);
this.txtPwd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.txtPwd.Name = "txtPwd";
this.txtPwd.Size = new System.Drawing.Size(329, 26);
this.txtPwd.TabIndex = 4;
this.txtPwd.UseSystemPasswordChar = true;
//
// txtUserName
//
this.txtUserName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtUserName.Location = new System.Drawing.Point(121, 118);
this.txtUserName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(329, 26);
this.txtUserName.TabIndex = 3;
this.txtUserName.TextChanged += new System.EventHandler(this.txtUserName_TextChanged);
this.txtUserName.Validated += new System.EventHandler(this.txtUserName_Validated);
//
// lblPwd
//
this.lblPwd.AutoSize = true;
this.lblPwd.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblPwd.Location = new System.Drawing.Point(43, 157);
this.lblPwd.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPwd.Name = "lblPwd";
this.lblPwd.Size = new System.Drawing.Size(70, 20);
this.lblPwd.TabIndex = 2;
this.lblPwd.Text = "密码(&P):";
//
// lblUserName
//
this.lblUserName.AutoSize = true;
this.lblUserName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblUserName.Location = new System.Drawing.Point(28, 121);
this.lblUserName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblUserName.Name = "lblUserName";
this.lblUserName.Size = new System.Drawing.Size(85, 20);
this.lblUserName.TabIndex = 2;
this.lblUserName.Text = "用户名(&U):";
//
// rbQCheck
//
this.rbQCheck.AutoSize = true;
this.rbQCheck.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.rbQCheck.Location = new System.Drawing.Point(14, 78);
this.rbQCheck.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.rbQCheck.Name = "rbQCheck";
this.rbQCheck.Size = new System.Drawing.Size(203, 24);
this.rbQCheck.TabIndex = 1;
this.rbQCheck.Text = "使用SQL Server身份验证(&Q)";
this.rbQCheck.UseVisualStyleBackColor = true;
this.rbQCheck.CheckedChanged += new System.EventHandler(this.rbQCheck_CheckedChanged);
//
// rbWCheck
//
this.rbWCheck.AutoSize = true;
this.rbWCheck.Checked = true;
this.rbWCheck.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.rbWCheck.Location = new System.Drawing.Point(14, 44);
this.rbWCheck.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.rbWCheck.Name = "rbWCheck";
this.rbWCheck.Size = new System.Drawing.Size(197, 24);
this.rbWCheck.TabIndex = 0;
this.rbWCheck.TabStop = true;
this.rbWCheck.Text = "使用Windows身份验证(&W)";
this.rbWCheck.UseVisualStyleBackColor = true;
this.rbWCheck.CheckedChanged += new System.EventHandler(this.rbw_CheckedChanged);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.cmbDataBase);
this.groupBox2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox2.Location = new System.Drawing.Point(26, 344);
this.groupBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox2.Size = new System.Drawing.Size(460, 106);
this.groupBox2.TabIndex = 5;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "连接到一个数据库";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(28, 33);
this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(201, 20);
this.label5.TabIndex = 0;
this.label5.Text = "选择或输入一个数据库名称(&D):";
//
// cmbDataBase
//
this.cmbDataBase.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbDataBase.FormattingEnabled = true;
this.cmbDataBase.Location = new System.Drawing.Point(29, 58);
this.cmbDataBase.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.cmbDataBase.Name = "cmbDataBase";
this.cmbDataBase.Size = new System.Drawing.Size(418, 28);
this.cmbDataBase.TabIndex = 2;
this.cmbDataBase.DropDown += new System.EventHandler(this.cmbDataBase_DropDown);
//
// label6
//
this.label6.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(26, 470);
this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(463, 3);
this.label6.TabIndex = 6;
//
// btnTestConnect
//
this.btnTestConnect.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnTestConnect.Location = new System.Drawing.Point(27, 493);
this.btnTestConnect.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnTestConnect.Name = "btnTestConnect";
this.btnTestConnect.Size = new System.Drawing.Size(149, 32);
this.btnTestConnect.TabIndex = 7;
this.btnTestConnect.Text = "测试连接";
this.btnTestConnect.UseVisualStyleBackColor = true;
this.btnTestConnect.Click += new System.EventHandler(this.btnTestConnect_Click);
//
// btnOK
//
this.btnOK.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOK.Location = new System.Drawing.Point(281, 493);
this.btnOK.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(98, 32);
this.btnOK.TabIndex = 8;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCancel.Location = new System.Drawing.Point(387, 493);
this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(100, 32);
this.btnCancel.TabIndex = 9;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// frmDataBaseConnect
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(496, 544);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.btnTestConnect);
this.Controls.Add(this.label6);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.btnReGetServerName);
this.Controls.Add(this.cmbSeverName);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Name = "frmDataBaseConnect";
this.Text = "更改连接";
this.Load += new System.EventHandler(this.frmDataBaseConnect_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cmbSeverName;
private System.Windows.Forms.Button btnReGetServerName;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton rbQCheck;
private System.Windows.Forms.RadioButton rbWCheck;
private System.Windows.Forms.Label lblPwd;
private System.Windows.Forms.Label lblUserName;
private System.Windows.Forms.TextBox txtPwd;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.CheckBox chkSavePwd;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox cmbDataBase;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button btnTestConnect;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
}
/// <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.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.cmbSeverName = new System.Windows.Forms.ComboBox();
this.btnReGetServerName = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.chkSavePwd = new System.Windows.Forms.CheckBox();
this.txtPwd = new System.Windows.Forms.TextBox();
this.txtUserName = new System.Windows.Forms.TextBox();
this.lblPwd = new System.Windows.Forms.Label();
this.lblUserName = new System.Windows.Forms.Label();
this.rbQCheck = new System.Windows.Forms.RadioButton();
this.rbWCheck = new System.Windows.Forms.RadioButton();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label5 = new System.Windows.Forms.Label();
this.cmbDataBase = new System.Windows.Forms.ComboBox();
this.label6 = new System.Windows.Forms.Label();
this.btnTestConnect = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(16, 15);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(205, 20);
this.label1.TabIndex = 0;
this.label1.Text = "输入信息以连接到选定的数据源";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(17, 46);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(97, 20);
this.label2.TabIndex = 1;
this.label2.Text = "服务器名(&E):";
//
// cmbSeverName
//
this.cmbSeverName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbSeverName.FormattingEnabled = true;
this.cmbSeverName.Location = new System.Drawing.Point(22, 72);
this.cmbSeverName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.cmbSeverName.Name = "cmbSeverName";
this.cmbSeverName.Size = new System.Drawing.Size(343, 28);
this.cmbSeverName.TabIndex = 2;
this.cmbSeverName.SelectedValueChanged += new System.EventHandler(this.cmbSeverName_SelectedValueChanged);
this.cmbSeverName.DropDown += new System.EventHandler(this.cmbSeverName_DropDown);
this.cmbSeverName.Click += new System.EventHandler(this.cmbSeverName_Click);
//
// btnReGetServerName
//
this.btnReGetServerName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReGetServerName.Location = new System.Drawing.Point(374, 72);
this.btnReGetServerName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnReGetServerName.Name = "btnReGetServerName";
this.btnReGetServerName.Size = new System.Drawing.Size(109, 28);
this.btnReGetServerName.TabIndex = 3;
this.btnReGetServerName.Text = "刷新(&R)";
this.btnReGetServerName.UseVisualStyleBackColor = true;
this.btnReGetServerName.Click += new System.EventHandler(this.btnReGetServerName_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.chkSavePwd);
this.groupBox1.Controls.Add(this.txtPwd);
this.groupBox1.Controls.Add(this.txtUserName);
this.groupBox1.Controls.Add(this.lblPwd);
this.groupBox1.Controls.Add(this.lblUserName);
this.groupBox1.Controls.Add(this.rbQCheck);
this.groupBox1.Controls.Add(this.rbWCheck);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(23, 110);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox1.Size = new System.Drawing.Size(460, 224);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "登陆到服务器";
//
// chkSavePwd
//
this.chkSavePwd.AutoSize = true;
this.chkSavePwd.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chkSavePwd.Location = new System.Drawing.Point(121, 190);
this.chkSavePwd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.chkSavePwd.Name = "chkSavePwd";
this.chkSavePwd.Size = new System.Drawing.Size(84, 24);
this.chkSavePwd.TabIndex = 5;
this.chkSavePwd.Text = "保存密码";
this.chkSavePwd.UseVisualStyleBackColor = true;
this.chkSavePwd.Visible = false;
//
// txtPwd
//
this.txtPwd.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPwd.Location = new System.Drawing.Point(121, 154);
this.txtPwd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.txtPwd.Name = "txtPwd";
this.txtPwd.Size = new System.Drawing.Size(329, 26);
this.txtPwd.TabIndex = 4;
this.txtPwd.UseSystemPasswordChar = true;
//
// txtUserName
//
this.txtUserName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtUserName.Location = new System.Drawing.Point(121, 118);
this.txtUserName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(329, 26);
this.txtUserName.TabIndex = 3;
this.txtUserName.TextChanged += new System.EventHandler(this.txtUserName_TextChanged);
this.txtUserName.Validated += new System.EventHandler(this.txtUserName_Validated);
//
// lblPwd
//
this.lblPwd.AutoSize = true;
this.lblPwd.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblPwd.Location = new System.Drawing.Point(43, 157);
this.lblPwd.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPwd.Name = "lblPwd";
this.lblPwd.Size = new System.Drawing.Size(70, 20);
this.lblPwd.TabIndex = 2;
this.lblPwd.Text = "密码(&P):";
//
// lblUserName
//
this.lblUserName.AutoSize = true;
this.lblUserName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblUserName.Location = new System.Drawing.Point(28, 121);
this.lblUserName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblUserName.Name = "lblUserName";
this.lblUserName.Size = new System.Drawing.Size(85, 20);
this.lblUserName.TabIndex = 2;
this.lblUserName.Text = "用户名(&U):";
//
// rbQCheck
//
this.rbQCheck.AutoSize = true;
this.rbQCheck.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.rbQCheck.Location = new System.Drawing.Point(14, 78);
this.rbQCheck.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.rbQCheck.Name = "rbQCheck";
this.rbQCheck.Size = new System.Drawing.Size(203, 24);
this.rbQCheck.TabIndex = 1;
this.rbQCheck.Text = "使用SQL Server身份验证(&Q)";
this.rbQCheck.UseVisualStyleBackColor = true;
this.rbQCheck.CheckedChanged += new System.EventHandler(this.rbQCheck_CheckedChanged);
//
// rbWCheck
//
this.rbWCheck.AutoSize = true;
this.rbWCheck.Checked = true;
this.rbWCheck.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.rbWCheck.Location = new System.Drawing.Point(14, 44);
this.rbWCheck.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.rbWCheck.Name = "rbWCheck";
this.rbWCheck.Size = new System.Drawing.Size(197, 24);
this.rbWCheck.TabIndex = 0;
this.rbWCheck.TabStop = true;
this.rbWCheck.Text = "使用Windows身份验证(&W)";
this.rbWCheck.UseVisualStyleBackColor = true;
this.rbWCheck.CheckedChanged += new System.EventHandler(this.rbw_CheckedChanged);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.cmbDataBase);
this.groupBox2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox2.Location = new System.Drawing.Point(26, 344);
this.groupBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox2.Size = new System.Drawing.Size(460, 106);
this.groupBox2.TabIndex = 5;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "连接到一个数据库";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(28, 33);
this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(201, 20);
this.label5.TabIndex = 0;
this.label5.Text = "选择或输入一个数据库名称(&D):";
//
// cmbDataBase
//
this.cmbDataBase.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbDataBase.FormattingEnabled = true;
this.cmbDataBase.Location = new System.Drawing.Point(29, 58);
this.cmbDataBase.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.cmbDataBase.Name = "cmbDataBase";
this.cmbDataBase.Size = new System.Drawing.Size(418, 28);
this.cmbDataBase.TabIndex = 2;
this.cmbDataBase.DropDown += new System.EventHandler(this.cmbDataBase_DropDown);
//
// label6
//
this.label6.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(26, 470);
this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(463, 3);
this.label6.TabIndex = 6;
//
// btnTestConnect
//
this.btnTestConnect.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnTestConnect.Location = new System.Drawing.Point(27, 493);
this.btnTestConnect.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnTestConnect.Name = "btnTestConnect";
this.btnTestConnect.Size = new System.Drawing.Size(149, 32);
this.btnTestConnect.TabIndex = 7;
this.btnTestConnect.Text = "测试连接";
this.btnTestConnect.UseVisualStyleBackColor = true;
this.btnTestConnect.Click += new System.EventHandler(this.btnTestConnect_Click);
//
// btnOK
//
this.btnOK.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOK.Location = new System.Drawing.Point(281, 493);
this.btnOK.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(98, 32);
this.btnOK.TabIndex = 8;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCancel.Location = new System.Drawing.Point(387, 493);
this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(100, 32);
this.btnCancel.TabIndex = 9;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// frmDataBaseConnect
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(496, 544);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.btnTestConnect);
this.Controls.Add(this.label6);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.btnReGetServerName);
this.Controls.Add(this.cmbSeverName);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Name = "frmDataBaseConnect";
this.Text = "更改连接";
this.Load += new System.EventHandler(this.frmDataBaseConnect_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cmbSeverName;
private System.Windows.Forms.Button btnReGetServerName;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton rbQCheck;
private System.Windows.Forms.RadioButton rbWCheck;
private System.Windows.Forms.Label lblPwd;
private System.Windows.Forms.Label lblUserName;
private System.Windows.Forms.TextBox txtPwd;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.CheckBox chkSavePwd;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox cmbDataBase;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button btnTestConnect;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
}
view plaincopy to clipboardprint?
public partial class frmDataBaseConnect : Form
{
private string strCheckType = ""; //验证方式,Windows验证还是SQL验证
private string strUserName = ";User ID="; //用户名
private string strPwd = ";Password="; //密码
private string strDataBaseName = ";Initial Catalog="; //数据库名称
private string strDataSource = "Data Source="; //服务器名称
private string _strConnetionString = ""; //连接字符串
public string ConnetionString
{
get
{
return _strConnetionString;
}
set { _strConnetionString = value; }
}
public frmDataBaseConnect()
{
InitializeComponent();
}
private void rbQCheck_CheckedChanged(object sender, EventArgs e)
{
}
private void rbw_CheckedChanged(object sender, EventArgs e)
{
if (rbWCheck.Checked)
{
SetEnable(false);
strCheckType = ";Integrated Security=True";
}
else
{
SetEnable(true);
strCheckType = ";Persist Security Info=True";
}
}
//设置连接方式后控件的现实效果
private void SetEnable(bool bEnable)
{
//rbQCheck.Enabled = bEnable;
txtPwd.Enabled = bEnable;
txtUserName.Enabled = bEnable;
chkSavePwd.Enabled = bEnable;
lblPwd.Enabled = bEnable;
lblUserName.Enabled = bEnable;
txtUserNameChange();
}
//获取服务器名称的按钮事件
private void btnReGetServerName_Click(object sender, EventArgs e)
{
btnReGetServerName.Enabled = false;
GetDataBaseSeverName();
btnReGetServerName.Enabled = true;
}
/// <summary>
/// 获取服务器名称
/// </summary>
private void GetDataBaseSeverName()
{
this.Cursor = Cursors.WaitCursor;
cmbSeverName.Items.Clear();
DataTable table = SmoApplication.EnumAvailableSqlServers(); //<----
foreach (DataRow row in table.Rows)
{
string s = "";
foreach (DataColumn c in table.Columns)
{
s += c.Caption + ": " + row[c] + "\n";
if (c.Caption == "Server")
{
this.cmbSeverName.Items.Add(row[c]);
}
}
}
this.cmbSeverName.SelectedIndex = 0;
this.Cursor = Cursors.Default;
}
/// <summary>
/// 获取服务器对应的数据库名称
/// </summary>
/// <param name="strServerName">服务器名称</param>
/// <param name="strUserName">用户名</param>
/// <param name="strPwd">密码</param>
/// <param name="bIsWindowObscured">是否为Windows验证</param>
/// <returns></returns>
public string[] GetDataBaseList(string strServerName, string strUserName, string strPwd, bool bIsWindowObscured)
{
string[] aTables = null;
Server svr = new Server();
svr.ConnectionContext.ServerInstance = strServerName;
svr.ConnectionContext.LoginSecure = bIsWindowObscured;
if (!bIsWindowObscured)
{
svr.ConnectionContext.Login = strUserName;
svr.ConnectionContext.Password = strPwd;
}
try
{
svr.ConnectionContext.Connect();
aTables = new string[svr.Databases.Count];
int i = 0;
foreach (Database db in svr.Databases)
{
aTables[i] = db.Name;
i++;
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message.ToString());
//return
}
return aTables;
}
private void cmbSeverName_Click(object sender, EventArgs e)
{
}
private void frmDataBaseConnect_Load(object sender, EventArgs e)
{
SetEnable(false);
cmbDataBase.Enabled = false;
}
private void txtUserName_Validated(object sender, EventArgs e)
{
}
/// <summary>
/// 用户名不为空时允许“确定”按钮弹出
/// </summary>
private void txtUserNameChange()
{
if (txtUserName.Text.Trim().Length != 0 || rbWCheck.Checked)
{
btnOK.Enabled = true;
}
else
{
btnOK.Enabled = false;
}
}
private void txtUserName_TextChanged(object sender, EventArgs e)
{
txtUserNameChange();
}
private void cmbSeverName_DropDown(object sender, EventArgs e)
{
if (cmbSeverName.Items.Count==0)
{
btnReGetServerName.Enabled = false;
GetDataBaseSeverName();
btnReGetServerName.Enabled = true;
}
if (cmbSeverName.Items.Count!=0)
{
cmbDataBase.Enabled = true;
}
}
/// <summary>
/// 数据库名称下拉框点击时间,获取数据库列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmbDataBase_DropDown(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
cmbDataBase.Items.Clear();
if (cmbSeverName.Text.Trim().Length != 0)
{
try
{
string[] aDataBaseNames = GetDataBaseList(cmbSeverName.Text.Trim().ToString(), txtUserName.Text.Trim().ToString(), txtUserName.Text.Trim().ToString(),rbWCheck.Checked);
if (aDataBaseNames != null)
{
for (int i = 0; i < aDataBaseNames.Length; i++)
{
cmbDataBase.Items.Add(aDataBaseNames[i]);
}
if (cmbDataBase.Items.Count != 0)
{
cmbDataBase.SelectedIndex = 0;
}
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "连接失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
this.Cursor = Cursors.Default;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnTestConnect_Click(object sender, EventArgs e)
{
if (CheckConnect())
{
MessageBox.Show("连接成功!", "连接成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("连接不成功!", "连接不成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void cmbSeverName_SelectedValueChanged(object sender, EventArgs e)
{
}
private void btnOK_Click(object sender, EventArgs e)
{
if (!CheckConnect())
{
DialogResult d = MessageBox.Show("连接不成功,是否继续配置?", "连接不成功", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (d == DialogResult.No)
{
_strConnetionString = "";
this.Close();
}
}
else
{
if (rbWCheck.Checked)
{
//拼写Windows验证的链接字符串
_strConnetionString = strDataSource + cmbSeverName.Text.Trim().ToString() + strDataBaseName + cmbDataBase.Text.Trim().ToString() + ";Integrated Security=True";
}
else
{
//拼写SQL验证的连接字符串
_strConnetionString = strDataSource + cmbSeverName.Text.Trim().ToString()
+ strDataBaseName + cmbDataBase.Text.Trim().ToString() + strCheckType + strUserName
+ txtUserName.Text.Trim().ToString() + strPwd + txtPwd.Text.Trim().ToString();
}
this.Close();
}
}
private bool CheckConnect()
{
bool bResult = false;
//确定按钮点击后,检查是否成功连接,如果成连接,置标志位True,否则为false
//false时,在获取程序连接字符串时提示没有配置成功
string strConnectString;// = ConnetionString;
if (rbWCheck.Checked)
{
//拼写Windows验证的链接字符串
strConnectString = strDataSource + cmbSeverName.Text.Trim().ToString() + strDataBaseName + cmbDataBase.Text.Trim().ToString() + ";Integrated Security=True";
}
else
{
//拼写SQL验证的连接字符串
strConnectString = strDataSource + cmbSeverName.Text.Trim().ToString()
+ strDataBaseName + cmbDataBase.Text.Trim().ToString() + strCheckType + strUserName
+ txtUserName.Text.Trim().ToString() + strPwd + txtPwd.Text.Trim().ToString();
}
SqlConnection myConnection = new SqlConnection(strConnectString);
try
{
myConnection.Open();
//MessageBox.Show("测试连接成功!", "测试连接", MessageBoxButtons.OK, MessageBoxIcon.Information);
bResult = true;
}
catch //(System.Exception ex)
{
//MessageBox.Show("连接不成功,是否继续配置?", "连接不成功", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
bResult = false;
}
finally
{
myConnection.Close();
}
return bResult;
}
}
public partial class frmDataBaseConnect : Form
{
private string strCheckType = ""; //验证方式,Windows验证还是SQL验证
private string strUserName = ";User ID="; //用户名
private string strPwd = ";Password="; //密码
private string strDataBaseName = ";Initial Catalog="; //数据库名称
private string strDataSource = "Data Source="; //服务器名称
private string _strConnetionString = ""; //连接字符串
public string ConnetionString
{
get
{
return _strConnetionString;
}
set { _strConnetionString = value; }
}
public frmDataBaseConnect()
{
InitializeComponent();
}
private void rbQCheck_CheckedChanged(object sender, EventArgs e)
{
}
private void rbw_CheckedChanged(object sender, EventArgs e)
{
if (rbWCheck.Checked)
{
SetEnable(false);
strCheckType = ";Integrated Security=True";
}
else
{
SetEnable(true);
strCheckType = ";Persist Security Info=True";
}
}
//设置连接方式后控件的现实效果
private void SetEnable(bool bEnable)
{
//rbQCheck.Enabled = bEnable;
txtPwd.Enabled = bEnable;
txtUserName.Enabled = bEnable;
chkSavePwd.Enabled = bEnable;
lblPwd.Enabled = bEnable;
lblUserName.Enabled = bEnable;
txtUserNameChange();
}
//获取服务器名称的按钮事件
private void btnReGetServerName_Click(object sender, EventArgs e)
{
btnReGetServerName.Enabled = false;
GetDataBaseSeverName();
btnReGetServerName.Enabled = true;
}
/// <summary>
/// 获取服务器名称
/// </summary>
private void GetDataBaseSeverName()
{
this.Cursor = Cursors.WaitCursor;
cmbSeverName.Items.Clear();
DataTable table = SmoApplication.EnumAvailableSqlServers(); //<----
foreach (DataRow row in table.Rows)
{
string s = "";
foreach (DataColumn c in table.Columns)
{
s += c.Caption + ": " + row[c] + "\n";
if (c.Caption == "Server")
{
this.cmbSeverName.Items.Add(row[c]);
}
}
}
this.cmbSeverName.SelectedIndex = 0;
this.Cursor = Cursors.Default;
}
/// <summary>
/// 获取服务器对应的数据库名称
/// </summary>
/// <param name="strServerName">服务器名称</param>
/// <param name="strUserName">用户名</param>
/// <param name="strPwd">密码</param>
/// <param name="bIsWindowObscured">是否为Windows验证</param>
/// <returns></returns>
public string[] GetDataBaseList(string strServerName, string strUserName, string strPwd, bool bIsWindowObscured)
{
string[] aTables = null;
Server svr = new Server();
svr.ConnectionContext.ServerInstance = strServerName;
svr.ConnectionContext.LoginSecure = bIsWindowObscured;
if (!bIsWindowObscured)
{
svr.ConnectionContext.Login = strUserName;
svr.ConnectionContext.Password = strPwd;
}
try
{
svr.ConnectionContext.Connect();
aTables = new string[svr.Databases.Count];
int i = 0;
foreach (Database db in svr.Databases)
{
aTables[i] = db.Name;
i++;
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message.ToString());
//return
}
return aTables;
}
private void cmbSeverName_Click(object sender, EventArgs e)
{
}
private void frmDataBaseConnect_Load(object sender, EventArgs e)
{
SetEnable(false);
cmbDataBase.Enabled = false;
}
private void txtUserName_Validated(object sender, EventArgs e)
{
}
/// <summary>
/// 用户名不为空时允许“确定”按钮弹出
/// </summary>
private void txtUserNameChange()
{
if (txtUserName.Text.Trim().Length != 0 || rbWCheck.Checked)
{
btnOK.Enabled = true;
}
else
{
btnOK.Enabled = false;
}
}
private void txtUserName_TextChanged(object sender, EventArgs e)
{
txtUserNameChange();
}
private void cmbSeverName_DropDown(object sender, EventArgs e)
{
if (cmbSeverName.Items.Count==0)
{
btnReGetServerName.Enabled = false;
GetDataBaseSeverName();
btnReGetServerName.Enabled = true;
}
if (cmbSeverName.Items.Count!=0)
{
cmbDataBase.Enabled = true;
}
}
/// <summary>
/// 数据库名称下拉框点击时间,获取数据库列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmbDataBase_DropDown(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
cmbDataBase.Items.Clear();
if (cmbSeverName.Text.Trim().Length != 0)
{
try
{
string[] aDataBaseNames = GetDataBaseList(cmbSeverName.Text.Trim().ToString(), txtUserName.Text.Trim().ToString(), txtUserName.Text.Trim().ToString(),rbWCheck.Checked);
if (aDataBaseNames != null)
{
for (int i = 0; i < aDataBaseNames.Length; i++)
{
cmbDataBase.Items.Add(aDataBaseNames[i]);
}
if (cmbDataBase.Items.Count != 0)
{
cmbDataBase.SelectedIndex = 0;
}
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "连接失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
this.Cursor = Cursors.Default;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnTestConnect_Click(object sender, EventArgs e)
{
if (CheckConnect())
{
MessageBox.Show("连接成功!", "连接成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("连接不成功!", "连接不成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void cmbSeverName_SelectedValueChanged(object sender, EventArgs e)
{
}
private void btnOK_Click(object sender, EventArgs e)
{
if (!CheckConnect())
{
DialogResult d = MessageBox.Show("连接不成功,是否继续配置?", "连接不成功", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (d == DialogResult.No)
{
_strConnetionString = "";
this.Close();
}
}
else
{
if (rbWCheck.Checked)
{
//拼写Windows验证的链接字符串
_strConnetionString = strDataSource + cmbSeverName.Text.Trim().ToString() + strDataBaseName + cmbDataBase.Text.Trim().ToString() + ";Integrated Security=True";
}
else
{
//拼写SQL验证的连接字符串
_strConnetionString = strDataSource + cmbSeverName.Text.Trim().ToString()
+ strDataBaseName + cmbDataBase.Text.Trim().ToString() + strCheckType + strUserName
+ txtUserName.Text.Trim().ToString() + strPwd + txtPwd.Text.Trim().ToString();
}
this.Close();
}
}
private bool CheckConnect()
{
bool bResult = false;
//确定按钮点击后,检查是否成功连接,如果成连接,置标志位True,否则为false
//false时,在获取程序连接字符串时提示没有配置成功
string strConnectString;// = ConnetionString;
if (rbWCheck.Checked)
{
//拼写Windows验证的链接字符串
strConnectString = strDataSource + cmbSeverName.Text.Trim().ToString() + strDataBaseName + cmbDataBase.Text.Trim().ToString() + ";Integrated Security=True";
}
else
{
//拼写SQL验证的连接字符串
strConnectString = strDataSource + cmbSeverName.Text.Trim().ToString()
+ strDataBaseName + cmbDataBase.Text.Trim().ToString() + strCheckType + strUserName
+ txtUserName.Text.Trim().ToString() + strPwd + txtPwd.Text.Trim().ToString();
}
SqlConnection myConnection = new SqlConnection(strConnectString);
try
{
myConnection.Open();
//MessageBox.Show("测试连接成功!", "测试连接", MessageBoxButtons.OK, MessageBoxIcon.Information);
bResult = true;
}
catch //(System.Exception ex)
{
//MessageBox.Show("连接不成功,是否继续配置?", "连接不成功", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
bResult = false;
}
finally
{
myConnection.Close();
}
return bResult;
}
}
view plaincopy to clipboardprint?
public class classDataBaseOption
{
private INIClass iniCls = new INIClass(AppDomain.CurrentDomain.BaseDirectory + "\\DataBaseConn.ini");
private System.ComponentModel.BackgroundWorker bwShow = new System.ComponentModel.BackgroundWorker();
/// <summary>
/// 是否连接正确
/// </summary>
private bool _bConnected = false;
public bool Connected
{
get { return _bConnected; }
//set{——}
}
/// <summary>
/// 连接字符串
/// </summary>
private string _ConnectionString;
public string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
}
public classDataBaseOption()
{
GetConnectionString();
}
public classDataBaseOption(bool bResetConnectionString)
{
if (bResetConnectionString)
{
ResetConnectString();
}
//GetConnectionString();
}
/// <summary>
/// 重新设置链接字符串
/// </summary>
private void ResetConnectString()
{
frmDataBaseConnect frmConnect = new frmDataBaseConnect();
frmConnect.ShowDialog();
//_bConnected = frmConnect.
if (frmConnect.ConnetionString == "")
{
_bConnected = false;
}
else
{
//存储新的链接字符串
iniCls.IniWriteValue("ConnectionString", "SqlConnectionString", frmConnect.ConnetionString);
_ConnectionString = frmConnect.ConnetionString;
_bConnected = true;
}
}
//获取连接字符串
private void GetConnectionString()
{
string strConnectionString = iniCls.IniReadValue("ConnectionString", "SqlConnectionString");
if (CheckConnect(strConnectionString))
{
_bConnected = true;
_ConnectionString = strConnectionString;
}
else
{
ResetConnectString();
//_bConnected = true;
}
}
/// <summary>
/// 根据链接字符串测试可连接性
/// </summary>
/// <param name="strConnectionString">连接字符串</param>
/// <returns></returns>
private bool CheckConnect(string strConnectionString)
{
bool bResult = false;
SqlConnection myConnection = new SqlConnection(strConnectionString);
try
{
myConnection.Open();
//MessageBox.Show("测试连接成功!", "测试连接", MessageBoxButtons.OK, MessageBoxIcon.Information);
bResult = true;
}
catch //(System.Exception ex)
{
//MessageBox.Show("连接不成功,是否继续配置?", "连接不成功", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
bResult = false;
}
finally
{
myConnection.Close();
}
return bResult;
}
}
/// <summary>
/// 读取ini文件
/// </summary>
public class INIClass
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
/// <summary>
/// 构造方法
/// </summary>
/// <param name="INIPath">文件路径</param>
public INIClass(string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, this.inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public string IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.inipath);
return temp.ToString();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}
public class classDataBaseOption
{
private INIClass iniCls = new INIClass(AppDomain.CurrentDomain.BaseDirectory + "\\DataBaseConn.ini");
private System.ComponentModel.BackgroundWorker bwShow = new System.ComponentModel.BackgroundWorker();
/// <summary>
/// 是否连接正确
/// </summary>
private bool _bConnected = false;
public bool Connected
{
get { return _bConnected; }
//set{——}
}
/// <summary>
/// 连接字符串
/// </summary>
private string _ConnectionString;
public string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
}
public classDataBaseOption()
{
GetConnectionString();
}
public classDataBaseOption(bool bResetConnectionString)
{
if (bResetConnectionString)
{
ResetConnectString();
}
//GetConnectionString();
}
/// <summary>
/// 重新设置链接字符串
/// </summary>
private void ResetConnectString()
{
frmDataBaseConnect frmConnect = new frmDataBaseConnect();
frmConnect.ShowDialog();
//_bConnected = frmConnect.
if (frmConnect.ConnetionString == "")
{
_bConnected = false;
}
else
{
//存储新的链接字符串
iniCls.IniWriteValue("ConnectionString", "SqlConnectionString", frmConnect.ConnetionString);
_ConnectionString = frmConnect.ConnetionString;
_bConnected = true;
}
}
//获取连接字符串
private void GetConnectionString()
{
string strConnectionString = iniCls.IniReadValue("ConnectionString", "SqlConnectionString");
if (CheckConnect(strConnectionString))
{
_bConnected = true;
_ConnectionString = strConnectionString;
}
else
{
ResetConnectString();
//_bConnected = true;
}
}
/// <summary>
/// 根据链接字符串测试可连接性
/// </summary>
/// <param name="strConnectionString">连接字符串</param>
/// <returns></returns>
private bool CheckConnect(string strConnectionString)
{
bool bResult = false;
SqlConnection myConnection = new SqlConnection(strConnectionString);
try
{
myConnection.Open();
//MessageBox.Show("测试连接成功!", "测试连接", MessageBoxButtons.OK, MessageBoxIcon.Information);
bResult = true;
}
catch //(System.Exception ex)
{
//MessageBox.Show("连接不成功,是否继续配置?", "连接不成功", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
bResult = false;
}
finally
{
myConnection.Close();
}
return bResult;
}
}
/// <summary>
/// 读取ini文件
/// </summary>
public class INIClass
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
/// <summary>
/// 构造方法
/// </summary>
/// <param name="INIPath">文件路径</param>
public INIClass(string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, this.inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public string IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.inipath);
return temp.ToString();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}
view plaincopy to clipboardprint?
//调用代码
classDataBaseOption clsCheckConnection = new classDataBaseOption();
if (clsCheckConnection.Connected)
{
clsConn.GetConnectionString = clsCheckConnection.ConnectionString;
}