• C# 数据库连接测试以及备份


    现在我们要做一个如图5.1的数据库连接配置,从界面上看有三个功能需要实现:从配置文件中读取数据库连接的相关属性、备份数据库、测试连接。

    现在我们就一个一个开始讲解。

       

                                       图5.1

    1.从配置文件中读取数据库连接的相关属性

    1)  配置文件中的数据库连接:

    <configuration>

      <appSettings>

        <!--数据库ip地址-->

        <add key="DBAddress" value="192.168.1.139"/>

        <!--烟点用户名-->

        <add key="UserName" value="sa"/>

        <!--烟点用户密码-->

        <add key="PassWord" value="pw@123456"/>

        <!--烟点数据库名-->

        <add key="DBName" value="2016-12-01 李松"/>

        <!--是否使用加密字符串-->

        <add key="ConStringEncrypt" value="False"/>

      </appSettings>

    <configuration>

     

    2)  创建一个类,数据库连接类。

           /// <summary>

        /// 数据库连接配置实体

        /// </summary>

        public class CLDBSet

        {

            /// <summary>

            /// 数据库连接地址

            /// </summary>

            public string DBAddress

            {

                get;

                set;

            }

     

            /// <summary>

            /// 数据库名

            /// </summary>

            public string DBName

            {

                get;

                set;

            }

     

            /// <summary>

            /// 用户名

            /// </summary>

            public string UserName

            {

                get;

                set;

            }

     

            /// <summary>

            /// 口令

            /// </summary>

            public string PassWord

            {

                get;

                set;

            }

            /// <summary>

            /// 是否加密

            /// </summary>

            public bool IsEncrypt

            {

                get;

                set;

            }

     

        }

    3)  从配置文件中获取相应的数据库连接字符串:

    public class PubConstant

    {

    Private static string configFileName=” System.config”; //System.config配置文件名

           /// <summary>

            /// 得到app.config里配置项的数据库连接字符串。

            /// </summary>

         /// <returns>返回CLDBSet 对象</returns>

           public static CLDBSet GetConnectionString()

            {

              CLDBSet dbset = new CLDBSet();

            //获得配置文件中是否使用加密文件的值

              String conSTringEncrypt=System.Configuration.ConfigurationManager. AppSettings["ConStringEncrypt"];  

           if (ConStringEncrypt.ToLower() == "true")

                {

                    dbset.IsEncrypt = true;

                }

                else

                {

                    dbset.IsEncrypt = false;

               }

    //获得配置文件中的数据库地址

    dbset.DBAddress = System.Configuration.ConfigurationManager.AppSettings["DBAddress"];

    //获得配置文件中的数据库名

    dbset.DBName = System.Configuration.ConfigurationManager.AppSettings["DBName"]; 

    //获得配置文件中的密码

    dbset.PassWord = System.Configuration.ConfigurationManager.AppSettings["PassWord"];  

    //获得配置文件中的口令(密码)

    dbset.UserName = System.Configuration.ConfigurationManager.AppSettings["UserName"];

    return dbset;

    }

    }

    4)  在UI界面中显示出当前配置文件中连接的数据库

            /// <summary>

            /// 当窗体加载时就显示

            /// </summary>

           /// <param name="sender"></param>

       /// <param name="e"></param>

            private void FSJKPZ_Load(object sender, EventArgs e)

            {

              PubConstant  pubConstant=New  PubConstant ();

               Var dbSet= pubConstant. GetConnectionString();

    //数据库连接地址

                txtAddress.Text = dbSet.DBAddress;

               //用户名

                txtUserName.Text = dbSet.UserName;

               //口令(密码)

                txtPassWord.Text = dbSet.PassWord;

                //数据库名

                txtSJK.Text = dbSet.DBName;

      }

    从配置文件中获取当前数据库连接已经算是完成了。

    2.测试连接

    测试连接数据库这一块  可以根据输入的服务器地址、用户名、密码、数据库名进行测试连接。

    1)  先创建一个DBTester类,DBTester类主要写数据库测试连接的方法

      public class DBTester

    {

       /// <summary>

            /// 测试界面输入的数据库连接

            /// </summary>

            /// <param name="dbSet">数据库连接信息</param>

            /// <returns></returns>

            public object[] TextDBUI(CLDBSet dbSet)

            {

                bool state = false;

                string msg = string.Empty;

                object[] o = new object[] { };

     

                SqlConnection con = new SqlConnection(string.Format("database={0};user={1};pwd={2};server={3};Connect Timeout=5", dbSet.DBName, dbSet.UserName, dbSet.PassWord, dbSet.DBAddress));

                try

                {

                    con.Open();

                    if (con.State == System.Data.ConnectionState.Open)

                    {

                        state = true;

                    }

                }

                catch (SqlException se)

                {

                    o = new object[] { se.Message, se.Source, se.ErrorCode };

                    state = false;

                }

                finally

                {

                    con.Close();

                }

     

                if (state)

                {

                    return null;

                }

                else

                {

                    return o;

                }

            }

    }

    2)注册点击测试连接按钮事件

      /// <summary>

            /// 注册点击测试连接按钮事件

            /// </summary>

            /// <param name="sender"></param>

        /// <param name="e"></param>

    Public void btnTest_Click(object sender, EventArgs e)

            {

                if (txtAddress.Text.Trim().Equals(""))

                {

                    this.ShowMessageBox(eDialogType.Forbidden, "请输入服务器地址!");

                    txtAddress.Focus();//为控件设置输入焦点

                    return;

                }

                if (txtSJK.Text.Trim().Equals(""))

                {

                    this.ShowMessageBox(eDialogType.Forbidden, "请输入数据库名!");

                    txtSJK.Focus();//为控件设置输入焦点

                    return;

                }

                if (txtUserName.Text.Trim().Equals(""))

                {

                    this.ShowMessageBox(eDialogType.Forbidden, "请输入用户名!");

                    txtUserName.Focus();//为控件设置输入焦点

                    return;

                }

     

                CLDBSet dbSet = new CLDBSet();

                dbSet.DBAddress = txtAddress.Text.Trim();

                dbSet.DBName = txtSJK.Text.Trim();

                dbSet.UserName = txtUserName.Text.Trim();

                dbSet.PassWord = txtPassWord.Text.Trim();

     

                DBTester tester = new DBTester();

     

                object[] result = tester.TextDBUI(dbSet);

     

                if (result == null)

                {

                    this.ShowMessageBox(eDialogType.Success, null, "数据库连接测试成功!");

                }

                else

                {

                    string s = string.Empty;

                    s = @"数据库连接测试失败!

    请检查配置的正确性以及网络的正常!

    " + s;

                    this.ShowMessageBox(eDialogType.Exception, null, s);

                }

            }

    3.备份数据库

    1) 写一个方法备份数据库的方法

           /// <summary>

            /// 数据库备份

            /// </summary>

            /// <param name="dbName">数据库名称</param>

            /// <param name="bakPath">备份文件路径+名称</param>

            /// <returns></returns>

            public bool BackupDatabase(string dbName, string bakPath)

            {

                try

                {

                    string bakSql = string.Format(@"use master

    backup database {0} to disk='{1}'", dbName, bakPath);

                 SqlHelper.ExecuteNonQuery(bakSql, null);

                // 注:SqlHelper是一个数据库的帮助类

                }

                catch

                {

                    return false;

                }

                return true;

            }

    1)  注册备份数据库按钮点击事件

      private void btnBackup_Click(object sender, EventArgs e)

            {

            //获得配置文件中的数据库连接

              PubConstant pubConstant=New PubConstant();

              Var dbset=  pubConstant. GetConnectionString(); //从配置文件中获得的数据库连接

       string dbName = dbSet.DBName; //获得数据库名

    string bakPath = "";

           SaveFileDialog saveFileDialog1 = new SaveFileDialog();

           saveFileDialog1.Filter = "BAK文件|*.bak";//类型是备份文件

          saveFileDialog1.FileName = dbName+DateTime.Now.ToString("yyyyMMddHHmmss") + ".bak"; //备份后的文件名 数据库名+当前时间

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)

                {

     

                    bakPath = saveFileDialog1.FileName;

     

                    if (BackupDatabase(dbName, bakPath))

                    {

                        this.ShowMessageBox(eDialogType.Success, "数据库备份成功!");

                    }

                    else

                    {

                        this.ShowMessageBox(eDialogType.Exception, "数据库备份失败!");

                    }

                }

            }

      }   

  • 相关阅读:
    MySQL密码复杂度与密码过期策略介绍
    mysql 5.7安装密码校验插件validate_password
    MySQL安装控制插件(Connection-Control)--可有效的防止客户端暴力登录的风险(攻击)
    Liunx 无法杀掉reids进程解决方法
    Linux安装Kafka
    ZooKeeper安装及简单操作
    关于数组的算法题(一)
    集合框架方法(用于算法)
    Spring简答题(一)
    java选择题(三)
  • 原文地址:https://www.cnblogs.com/yaoxiaodan/p/6274191.html
Copyright © 2020-2023  润新知