现在我们要做一个如图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# 数据库连接测试以及备份相关推荐

  1. php连接mysql数据库测试_php连接mysql数据库连接测试文件

    define("RelativePath", "."); include_once(RelativePath."/DB_mysql.class.php ...

  2. JDBC数据库连接测试工具

    贴代码 import java.io.PrintStream; import java.sql.*; import java.util.Properties;public class ZJdbcPin ...

  3. Swagger 测试(个人备份)

    swagger2导出html文档和pdf文档(解决pdf中文乱码与显示不全问题)_WWXA-CSDN博客 pom文件: <project xmlns="http://maven.apa ...

  4. MicroStrategy 备份项目源测试记录

    MicroStrategy 备份项目源测试记录 背景 MSTR在测试环境初步测试结束,但由于初次使用,仍然存在部分风险情况发生,因此查找各种容错机制,保证正式环境部署时如果出现错误,可以及时进行恢复. ...

  5. Linux ubuntu MySQL 定时备份/手动备份/还原 测试教程

    一 手动备份 先创建测试库  work10 如图 也可以在  本机的 navicat 直接操作   创建几张表 准备完成  退出 MySQL  重新打开  控制台也可以 创建 一个 文件夹 用来 储存 ...

  6. PHP程序测试表模板,PHPUnit 手册

    PHPUnit 手册 Sebastian Bergmann 版权 © 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ...

  7. slurm安装配置_Slurm任务调度系统部署和测试(源码)(1)

    1. 概述 slurm任务调度系统,主要应用在HPC集群资源管理和任务调度.具体信息参见slurm官方网站:https://slurm.schedmd.com/ 部署Slurm任务调度系统,需要部署N ...

  8. 管理RMAN备份_报告(Reporting)RMAN操作

    1.RMAN报告概述 1.1.RMAN报告的目的 作为备份和恢复策略的一部分,应该定期运行报告来显示已经备份了什么.可以确认哪些数据文件需要备份或哪些文件最近没有备份.同时,可以预览如果问题发生,RM ...

  9. 宝塔linux计划任务ftp,宝塔面板定时备份网站及数据库至FTP存储空间图文教程

    站长平时会用各种方法备份.包括手动备份.自动备份.定时备份等等不同方法.对于运维人员来说不是难事,对于站点较多的新手站长来说是有一点困难的,毕竟新手在技术方便还是弱了一些.为了能够有更多的时间运营网站 ...

最新文章

  1. 深入剖析nginx第141页
  2. CSP认证201803-3 URL映射[C++题解]:字符串处理、模拟
  3. 面试感悟—-一名3年工作经验的程序员应该具备的技能
  4. 为什么比尔盖茨,马斯克、霍金都提醒你:要警惕人工智能?(上)
  5. centos 卸载自带的 java
  6. Python基础教程之第3章 使用字符串
  7. 数据导入导出、备份恢复
  8. SQLcode错误代码汇总和sqlstate=37000的解决方案
  9. html5的方框属性,HTML连载37-边框属性(下)、边框练习
  10. windows环境elasticsearch安装IK分词器
  11. Vivado 开发教程 汇总
  12. 成功解决ERROR: Command errored out with exit status 1:    command: 'f:\program files\python\python36\pyt
  13. 帆软报表更新到服务器控件展示不出来_报表工具软件FineReport常见问题与解答总结...
  14. ESXi虚拟机导出为OVF模板
  15. Calendar日期类获取上月同期需求
  16. AS 5637.1跟AS 3837是什么关系?
  17. npm安装包报错,清除一下缓存
  18. Ubuntu 16.04 安装 CUDA Toolkit 10.0
  19. 国企数字化转型主要工作
  20. JavaScript in_array 函数

热门文章

  1. java1.7开发环境_在Windows平台搭建Java 1.7开发环境
  2. yili邮箱服务器配置,手把手教 个人SMTP服务器的配置 -电脑资料
  3. C/C++高级算法之绘制曼德布洛特集
  4. 多模态语义分析_情感分析、多模态NLP、多语言翻译...这场NLP知识盛宴不可错过!...
  5. php实现文本替换,php文本替换 函数 strtr()、str_repalce()
  6. 延迟关机_苹果电脑到底需不需要关机?关机和休眠你选择哪个
  7. c# opencv 轮廓检测_C#中OpenCVSharp实现轮廓检测
  8. python用pip安装numpy mac_小白入门Python,mac下如何安装pip、ipython
  9. java 区号_求您!JAVA作业,窗口查询区号!
  10. 解决E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件。