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, "數據庫備份失敗!");
??????????????? }
??????????? }
??????? }
? }? ?
?
轉載于:https://www.cnblogs.com/yaoxiaodan/p/6274191.html
總結
以上是生活随笔為你收集整理的C# 数据库连接测试以及备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买了洋垃圾电脑换个cpu(洋垃圾组装便宜
- 下一篇: c# char unsigned_dll