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, "数据库备份失败!");
}
}
}
}
C# 数据库连接测试以及备份的更多相关文章
- [Java] zjdbcping:JDBC数据库连接测试工具
作者: zyl910 一.缘由 当数据库服务器很多时,或者要与第三方公司做数据库表交换时,此时觉得若有一个简单快捷的数据库连接测试工具就好了. 因为若是采取直接把程序部署到tomcat等容器再测试的办 ...
- WPF 一个数据库连接测试的实现
要实现的功能效果图如下:因为我们要测试数据是从输入框获得的,所以,我们的连接字符串不是写死在应用程序中的.下面我就详细介绍一下.
- asp.net core 中 sql server 2017 数据库连接测试
使用sql server 2017 进行连接: 配置appsettings.json文件 { "ConnectionStrings": { "DefaultConnect ...
- JDBC数据库连接测试工具
贴代码 import java.io.PrintStream; import java.sql.*; import java.util.Properties; public class ZJdbcPi ...
- Percona XtraBackup 关于 MySQL备份还原的详细测试
一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...
- Slurm任务调度系统部署和测试(源码)(1)
1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务7. 部署slurm7.1 创建slurm用户7.2 挂 ...
- linux设置定时备份mysql数据库
最近写自己的项目,买了阿里云服务器,可以在云上根据自己想到的需求随意使用技术,感觉很爽.备份mysql流程如下: 环境:CentOS Linux release 7.2.1511 (Core) mys ...
- Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...
- Mysql备份系列(1)--备份方案总结性梳理
mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...
随机推荐
- C语言对mysql数据库的操作
原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的! 我们言归正 ...
- Linux:最终用途cat命令查看不可见的字符
常,的程序或软件,并没有语法错误,你检查其内容没有发现相关问题.这是时间,因为你用普通的文本编辑软件来查看,有很多的字符显示不出来的,但在最终用途cat命令可以很easy地检測出是否存在这些字符. ~ ...
- Tomcat集群+Nginx+Redis服务搭建
由于公司新业务突然上来了,单个Tomcat实例已经不能满足业务发展的需要了,只能通过搭建集群来解决问题了.所以就出现了下面的内容: 1.Redis保存Session信息 为了保存Session信息在集 ...
- [翻译]如何编写GIMP插件(二)
写在前面: 本人翻译并不专业,甚至英语不好,翻译内容仅供参考.由于博主是边学边翻译,所以不能保证翻译的准确性和正确性,如果可以,请查看原版学习,本文仅作学习记录之用. <How to write ...
- C语言实现全排列
实现全排列,递归实现 #include <stdio.h> #include <stdlib.h> ; void swap(int *a, int *b) { int m; m ...
- 屏幕录制H.264视频,AAC音频,MP4复,LibRTMP现场活动
上周完成了一个屏幕录制节目,实时屏幕捕获.记录,视频H.264压缩,音频应用AAC压缩,复用MP4格公式,这使得计算机和ios设备上直接播放.支持HTML5的播放器都能够放,这是标准格式的优点.抓屏也 ...
- WPF随手小记之二 ——改变DataGrid样式
大部分时候我们并不需要手动改变DataGrid的样式,因为用默认的其实也看得过去,而且在DataGrid中的数据也远比外观重要. 但总有时候,我们需要做点必要的UI修改来使DataGrid更美观. 一 ...
- Effective C++ Item 46 当需要投你非成员函数定义模板
本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当我们编写一个 class template, 而它所提供之"与此 temp ...
- JBoss7官方下载最新版本
JBoss是全世界开发人员共同努力的成果.一个基于J2EE的开放源码的应用server. 由于JBoss代码遵循LGPL许可,能够在不论什么商业应用中免费使用它.而不用支付费用. 2006年,Jbos ...
- svn搭建
原文:svn搭建 二.Subversion的安装与测试 Subversion的配置方式有很多种,同时也可以配置不同的操作系统之上,本文我讲解的是Subversion 1.5.4 for Apache2 ...