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,如需转载请自行联系原作者


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值