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


相关文章
|
6月前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
|
SQL 数据库
在运行数据库脚本的时候报sql语法错,按理来说数据库脚本既然被导出来了那应该是不会有什么语法错误的
在运行数据库脚本的时候报sql语法错,按理来说数据库脚本既然被导出来了那应该是不会有什么语法错误的
119 0
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 数据库
|
SQL 存储 关系型数据库