c# 备份还原 例子

简介:
// 记得加 folderBrowserDialog1   openFileDialog1      控件
using  System.Data.SqlClient;    // 连接数据库   公共变量
namespace  WindowsApplication1.GoodMenhod
{
    
class  getSqlConnection
    { 
        
string  sql  =   " Data Source=win7-pc;database=Kc;uid=sa;pwd=sa " ;
        SqlConnection conn; 
      
        
public  SqlConnection GetCon()
        {
           conn 
=   new  SqlConnection(sql);
           conn.Open();
           
return  conn;
        }
     
    }
}


using  System.Data.SqlClient;
using  WindowsApplication1.GoodMenhod;   // 引用命名空间
namespace  WindowsApplication1
{
    
public   partial   class  Form1 : Form
    {
        
public  Form1()
        {
            InitializeComponent();
        }
        
private   void  button1_Click( object  sender, EventArgs e)   // 打开 备份路径
        {
            
if  (folderBrowserDialog1.ShowDialog()  ==  DialogResult.OK)
            {
                txtPath.Text 
=  folderBrowserDialog1.SelectedPath.ToString();
            }
        }
        
private   void  button2_Click( object  sender, EventArgs e)   // 备份名称  保存 
        {
            
try
            {
                
if  (txtPath.Text  !=   ""  )
                {
                    getSqlConnection geCon 
=   new  getSqlConnection();
                    SqlConnection con 
=  geCon.GetCon();
                    
string  strBacl  =   " backup database Kc to disk=' "   +  txtPath.Text.Trim()  +   " \\ "   +  txtName.Text.Trim()  +   " .bak' " ;
                    SqlCommand Cmd 
=   new  SqlCommand(strBacl, con);
                    
if  (Cmd.ExecuteNonQuery()  !=   0 )
                    {
                        MessageBox.Show(
" 数据备份成功! " " 提示框 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
                        
this .Close();
                    }
                    
else
                    {
                        MessageBox.Show(
" 数据备份失败! " " 提示框 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                
else
                {
                    MessageBox.Show(
" 请填写备份的正确位置及文件名! " " 提示框 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
//  end 
            }
            
catch  (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString());
            }

        }
    }
}


   
private   void  button3_Click( object  sender, EventArgs e)   // 打开 将要还原的文件
        {
            openFileDialog1.FilterIndex 
=   0 ;
            openFileDialog1.FileName 
=   "" ;
            openFileDialog1.Filter 
=   " txt files (*.bak)|*.bak|All files (*.*)|*.* " ;

            
if  (openFileDialog1.ShowDialog()  ==  DialogResult.OK)
            {
                textPaht.Text 
=  openFileDialog1.FileName.ToString();
            }
        }
 
private   void  button4_Click( object  sender, EventArgs e)    // 还原
        {
             
if  (textPaht.Text  !=   "" )
            {
                getSqlConnection geCon 
=   new  getSqlConnection();
                SqlConnection con 
=  geCon.GetCon();
                
if  (con.State  ==  ConnectionState.Open)
                {
                    con.Close();
                }
                
// 连接的数据库是master,所以要初始化新的连接字符串
                 string  DateStr  =   " Data Source=win7-pc;Database=master;User id=sa;PWD=sa " ;
                SqlConnection conn 
=   new  SqlConnection(DateStr);
                conn.Open();
                
// -------------------杀掉所有连接 db_CSManage 数据库的进程--------------
               
//  string sql = " SELECT spid FROM master..sysprocesses WHERE dbid=db_id('" + strDBName + "')";
                 string  strSQL  =   " select spid from master..sysprocesses where dbid=db_id( 'Kc')  " ; // 读取连接当前数据库的进程
                SqlDataAdapter Da  =   new  SqlDataAdapter(strSQL, conn);
                DataTable spidTable 
=   new  DataTable();
                Da.Fill(spidTable);
                SqlCommand Cmd 
=   new  SqlCommand();
                Cmd.CommandType 
=  CommandType.Text;
                Cmd.Connection 
=  conn;
                
for  ( int  iRow  =   0 ; iRow  <=  spidTable.Rows.Count  -   1 ; iRow ++ )
                {
                    Cmd.CommandText 
=   " kill  "   +  spidTable.Rows[iRow][ 0 ].ToString();    // 强行关闭用户进程 
                    Cmd.ExecuteNonQuery();
                }
                conn.Close();
                conn.Dispose();
                
// --------------------------------------------------------------------
                SqlConnection sqlcon  =   new  SqlConnection(DateStr);
                sqlcon.Open();
                SqlCommand sqlCmd 
=   new  SqlCommand( " backup database Kc to disk=' "   +  textPaht.Text.Trim()  +   " ' restore database Kc from disk=' "   +  textPaht.Text.Trim()  +   " ' " , sqlcon);
                sqlCmd.ExecuteNonQuery();
                sqlCmd.Dispose();
                sqlcon.Close();
                sqlcon.Dispose();
                MessageBox.Show(
" 数据还原成功! " " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
                MessageBox.Show(
" 为了必免数据丢失,在数据库还原后将关闭整个系统。 " );
                Application.Exit();
            }
            
else
            {
                MessageBox.Show(
" 请选择备份文件! " " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }


    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572283.html,如需转载请自行联系原作者


相关文章
|
移动开发 C# vr&ar
C#中通过Selenium IWebDriver实现人人网相册备份工具
我用Selenium写了一个人人网相册备份工具,亲测通过。 需要输入你的用户名、密码、相册地址。 代码如下: using System; using System.Collections.Generic; using System.
1225 0
|
关系型数据库 MySQL C#
C#备份还原MySql数据库
原文:C#备份还原MySql数据库       项目结束,粘点代码出来让Google或Baidu一下,原因是现在还搜不到这么现成的       调用MySql的工具mysqldump来实现。       类Cmd来实现调用cmd命令, 要启动的进程所在的目录是说mysql自动的备份还原数据库工具mysqldump和mysql所在目录,当然,这个方法可以执行别的命令行工具。
1237 0
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
490 3
|
25天前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
112 19
|
2月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
362 0
|
11月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
216 3
|
10月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
676 12
|
11月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
435 4
|
安全 程序员 编译器
C#一分钟浅谈:泛型编程基础
在现代软件开发中,泛型编程是一项关键技能,它使开发者能够编写类型安全且可重用的代码。C# 自 2.0 版本起支持泛型编程,本文将从基础概念入手,逐步深入探讨 C# 中的泛型,并通过具体实例帮助理解常见问题及其解决方法。泛型通过类型参数替代具体类型,提高了代码复用性和类型安全性,减少了运行时性能开销。文章详细介绍了如何定义泛型类和方法,并讨论了常见的易错点及解决方案,帮助读者更好地掌握这一技术。
207 11