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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux程序选择boy糊者girl,linux脚本程序练习-Go语言中文社区

1、编写一个名为iffile程序&#xff0c;它执行时判断/bin目录下date文件是否存在&#xff1f;2、编写一个名为greet的问候程序&#xff0c;执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨&#xff0c;中午到下午六点为下午&#xff0c;下午六点到半夜为晚…

什么是初效过滤器_初效过滤器怎么样 初效过滤器特点介绍【详解】

说起过滤器&#xff0c;我们大家都不陌生。现在环境污染严重&#xff0c;我们大多数家庭都在使用 净水器 、 空气净化器 等家电设备&#xff0c;它们需要依靠过滤器来净化水质和空气&#xff0c;让我们的生活更加健康。不过&#xff0c;您知道初效过滤器安装的步骤是什么吗?下…

组件 模块 插件_播放2 –模块,插件有什么区别?

组件 模块 插件关于Play 2模块和插件似乎有些困惑。 我想这是因为两者经常是同义词。 在Play&#xff08;两个版本-1和2&#xff09;中&#xff0c;存在明显的差异。 在本文中&#xff0c;我将研究什么是插件&#xff0c;如何在Java和Scala中实现插件&#xff0c;以及如何从模块…

云计算hcie贴吧_专业介绍|计算机网络技术

点击蓝字关注我们01专业特色计算机网络技术专业所有在职专任教师都具有高级职称和硕士学位&#xff0c;双师比例为75&#xff05;&#xff1b;在企业核心岗位工作的兼职老师4人。筹备组建华为ICT学院。华为ICT学院是华为公司主导的&#xff0c;面向全球在校大学生传递华为ICT技…

url重写(urlrewrite)的一些系统变量

学php也有3年了&#xff0c;一直对url重写不是很了解&#xff0c;本学用到的话都是百度一下&#xff0c;再复制作简单修改&#xff0c;一些变量的参数都不太了解什么意思&#xff0c;难得今天有时间&#xff0c;做个笔记吧&#xff01; 1&#xff09;可用的一些系统变量&#x…

linux日志自动按天保存,linux实现按天生成日志文件并自动清理

linux实现按天生成日志文件并自动清理前篇文章中讲到如何在Linux crontab创建每秒执行的方法&#xff0c;高人可能早意识到日志文件没做处理&#xff0c;假如没人工处理久了日后越来越大肯定会出现问题&#xff0c;当然人工处理也不现实。为了解决这个问题&#xff0c;所以有了…

使用Java成功生成代码的7个技巧

作为介绍&#xff0c;最近我有点安静&#xff0c;部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库&#xff0c;我们证明了该库可以在低个位数微秒内解析和存储消息。 当然&#xff0c;它利用了我们的开源产品Chronicle-Queu…

通达信版弘历软件指标_中线公式指标(副图 通达信 贴图)明确文字提示,辅助判断中线走势下载_通达信公式...

中线公式指标(副图 通达信 贴图)明确文字提示&#xff0c;辅助判断中线走势下载详细说明第一股票公式网()告诉您&#xff1a;当前正要下载&#xff1a;中线公式指标(副图 通达信 贴图)明确文字提示&#xff0c;辅助判断中线走势下载 中线公式指标(副图 通达信 贴图)明确文字提示…

新巴巴运动网 项目第十一天

新巴巴运动网 项目第十一天 今天内容 购物车 创建购物车对象 加入购物车分析开发流程 加入购物车代码开发 同款商品合并(非登陆时、已登陆时) 去购物车结算分析开发流程 去购物车结算代码开发 创建购物车对象 购物项 Sku 是否有货 数量 购物车 List<购物项> 结果集 小计…

linux查看apache配置文件路径,linux 命令行下查看apache配置文件httpd.conf位置

如何用linux命令查看apache配置文件httpd.conf位置&#xff0c;说明如下输入命令httpd -V输出结果[rootMyServer ~]# httpd -VServer version: Apache/2.2.15 (Unix)Server built: Dec 15 2015 15:47:31Servers Module Magic Number: 20051115:25Server loaded: APR 1.3.9, APR…

qt linux webservice,Qt实现访问WebService

之前也许是因为根本不用的原因吧,,,根本没有想过Qt访问WebService的方式....要解决这个问题,因为Qt现行版没有提供直接访问的类库...首先是一些必备知识,我连的服务器是用VS2010建的只有 string helloworld() 和string getHello(string str)两个接口的iis服务器.针对这个我一共…

eclipse 插件教程_编写Eclipse插件教程–第1部分

eclipse 插件教程Eclipse是三个最受欢迎的Java开发IDE之一。 其成功的原因之一是其可扩展性。 对于任何知道该怎么做并且已经做到的人来说&#xff0c;编写eclipse插件都可以非常轻松快捷。 不幸的是&#xff0c;第一次在Eclipse中进行操作会非常耗时且令人沮丧。 Eclipse框架非…

mac cad石材填充图案_CAD电视背景墙画法步骤

在做室内装修设计的时候&#xff0c;电视背景墙往往是我们需要考虑的重点。1、打开平面布置图。2、复制一份&#xff0c;主要复制电视墙区域。3、矩形选框框选电视墙区域。4、删除选框意外的线条。5、旋转90度&#xff0c;让我们正对电视墙。6、在下方画基准线&#xff0c;作为…

HDU-3065 病毒侵袭持续中 AC自动机又是一板子!

病毒侵袭持续中 上一题是求出现多少病毒输出病毒序号&#xff0c;而这题输出每个病毒出现的次数。这题有字典树基础都能做出来&#xff0c;把叶子节点用相应的编号标记起来&#xff0c;匹配的时候遍历到叶子节点用一个数组把次数存起来就行了。 有了前几题的教训直接用静态树做…

街机linux有安卓好吗,Ubuntu下用xmame玩街机游戏

Ubuntu下用xmame玩街机游戏xmame是Windows下mame的Linux版&#xff0c;gxmame是xmame的图形化前端。mame号称是模拟效果最好、支持roms最多的模拟器&#xff0c;不过这个我就不清楚了。安装很简单sudoapt-getinstallgxmame会自动安装xmame和gxmame&#xff0c;安装后在Gnome游戏…

运行时间_运行一段时间报高压保护

请点击蓝字“阿理支持连”关注哦一起来探索空调的技术Discovery ●运行一段时间报高压保护某地区用户报修一台柜机运行一段时间(20分钟)后报E1高压保护&#xff0c;到底怎么回事呢&#xff1f;让我们一起来探讨一下吧&#xff01;一、案例描述这是一套定频柜机&#xff0c;E1高…

使用Lambda的装饰设计模式

随着Java中lambda的出现&#xff0c;我们现在有了一个新工具&#xff0c;可以更好地设计我们的代码。 当然&#xff0c;第一步是使用流&#xff0c;方法引用和Java 8中引入的其他简洁功能。 展望未来&#xff0c;我认为下一步是重新访问完善的设计模式&#xff0c;并通过功能性…

linux nohup /dev/null,nohup结合/dev/null

Linux重定向linux中经常需要后台执行程序&#xff0c;并将程序输出结果记录到本地文件&#xff0c;因此可选择>>或者>操作。追加模式>> 示例&#xff1a;echo ‘abc’ >>test.txt覆盖模式> 示例&#xff1a;echo abc>test.txt0标准输入、1标准输…

CodeForces 757B Bash's Big Day(线性筛)

题意&#xff1a;给你一个集合&#xff0c;让你找到一个最大的子集&#xff0c;使得子集里面的元素的gcd&#xff01;1&#xff0c;输出子集的元素的个数。 思路&#xff1a;先将集合里面的元素哈希&#xff0c;再线性筛。 PS&#xff1a;明明以前做过类似的题的&#xff0c;结…

macbook pro python开发_Mac打造python2 python3开发环境

最新版的MacOS Sierra默认带的python环境仍然为2.7.10&#xff0c;本文将介绍使用Brew安装python3.5并做简单的配置&#xff0c;打造python2&#xff0c;python3共存的开发环境直接尝试brew安装&#xff0c;提示需要执行brew link gdbmthatsitdeMacBook-Pro:~ thatsit$ brew in…