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 = @"數據庫連接測試失敗!\r\n

請檢查配置的正確性以及網絡的正常!

" + 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, "數據庫備份失敗!");

                }

            }

        }

  }   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM