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.
1146 0
|
关系型数据库 MySQL C#
C#备份还原MySql数据库
原文:C#备份还原MySql数据库       项目结束,粘点代码出来让Google或Baidu一下,原因是现在还搜不到这么现成的       调用MySql的工具mysqldump来实现。       类Cmd来实现调用cmd命令, 要启动的进程所在的目录是说mysql自动的备份还原数据库工具mysqldump和mysql所在目录,当然,这个方法可以执行别的命令行工具。
1145 0
|
21天前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
|
21天前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
|
21天前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
21天前
|
人工智能 C# 开发者
C#编程中的图形界面设计
【4月更文挑战第21天】本文探讨了C#在GUI设计中的应用,介绍了Windows Forms、WPF和UWP等常用框架,强调了简洁界面、响应式设计和数据绑定等最佳实践。通过实际案例,展示了C#在企业应用、游戏开发和移动应用中的GUI实现。随着技术发展,C#在GUI设计的未来将趋向于跨平台、更丰富的组件和AI集成,为开发者创造更多可能性。
|
21天前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
|
21天前
|
开发框架 Linux C#
C#编程的跨平台应用
【4月更文挑战第21天】C#与.NET Core的结合使得跨平台应用开发变得高效便捷,提供统一编程模型和高性能。丰富的类库、活跃的社区支持及Visual Studio Code、Xamarin等工具强化了其优势。广泛应用在企业系统、云服务和游戏开发中,虽面临挑战,但随着技术进步,C#在跨平台开发领域的前景广阔。
|
21天前
|
人工智能 C# 云计算
C#编程的未来发展趋向
【4月更文挑战第21天】C#编程未来将深化跨平台支持,强化云计算与容器技术集成,如.NET Core、Docker。在AI和ML领域,C#将提供更丰富框架,与AI芯片集成。语言和工具将持续创新,优化异步编程,如Task、async和await,提升多核性能。开源生态的壮大将吸引更多开发者,共创更多机遇。