首页 > 学院 > 开发设计 > 正文

C# WinForm 应用程序的 SQL Server 连接配置界面 动态库

2019-11-17 04:00:08
字体:
来源:转载
供稿:网友
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;   
            } 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表