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

  1. [Java] zjdbcping:JDBC数据库连接测试工具

    作者: zyl910 一.缘由 当数据库服务器很多时,或者要与第三方公司做数据库表交换时,此时觉得若有一个简单快捷的数据库连接测试工具就好了. 因为若是采取直接把程序部署到tomcat等容器再测试的办 ...

  2. WPF 一个数据库连接测试的实现

    要实现的功能效果图如下:因为我们要测试数据是从输入框获得的,所以,我们的连接字符串不是写死在应用程序中的.下面我就详细介绍一下.

  3. asp.net core 中 sql server 2017 数据库连接测试

    使用sql server 2017 进行连接: 配置appsettings.json文件 { "ConnectionStrings": { "DefaultConnect ...

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

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

  5. Percona XtraBackup 关于 MySQL备份还原的详细测试

    一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...

  6. Slurm任务调度系统部署和测试(源码)(1)

    1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务7. 部署slurm7.1 创建slurm用户7.2 挂 ...

  7. linux设置定时备份mysql数据库

    最近写自己的项目,买了阿里云服务器,可以在云上根据自己想到的需求随意使用技术,感觉很爽.备份mysql流程如下: 环境:CentOS Linux release 7.2.1511 (Core) mys ...

  8. Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...

  9. Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...

随机推荐

  1. javascript立即调用的函数表达式N种写法(第二篇)

    原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){}) ...

  2. 个推A/B测试评测

    A/B测试在各类网站设计中已经是比较常见的,本文着重讲讲A/B测试在应用推送领域的作用. 目前国外开通A/B测试的推送服务商只有swrve,而国内的个推也在前不久发布的smart push 2.0中集 ...

  3. asp.net MVC中的AppendTrailingSlash以及LowercaseUrls

    asp.net MVC中的AppendTrailingSlash以及LowercaseUrls asp.net MVC是一个具有极大扩展性的框架,可以在从Url请求开始直到最终的html的渲染之间进行 ...

  4. SQL练习1关于插入删除,修改,单表查询

    --创建数据库create database studentsDB --创建表create table student( id int primary key, stuid char(10), stu ...

  5. iOS基础 - 核心动画

    一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...

  6. Enumerable和yield

    说说IEnumerable和yield IEnumerable数据类型是我比较喜欢的数据类型,特别是其强类型IEnumerable<T>更获得Linq的支持使得代码看起来更加优雅.整洁. ...

  7. 认识CLR [《CLR via C#》读书笔记]

    认识CLR [<CLR via C#>读书笔记] <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runti ...

  8. C#HTTP代理的实现之注册表实现

    HTTP代理的实现形式,可以通过修改注册表项,然后启动浏览器来实现,也可以通过SOCKET通信,构造HTTP头实现.下面是关于注册表实现的方式. 注册表实现,只需要修改几个关键的注册表项就可以了. 第 ...

  9. (翻译) Android ListView 性能优化指南

    本文翻译了Lucas Rocha的Performance Tips for Android’s ListView.这是一篇关于介绍如何提升ListView性能的文章,非常的优秀.使得我拜读之后,忍不住 ...

  10. kindeditor使用方法

    一.下载编辑器 下载KindEditor最新版本(本版本为4.1.10) 下载页面:http://kindeditor.net/down.php 二.部署编辑器 解压kindeditor-x.x.x. ...