博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 备份还原 例子
阅读量:5773 次
发布时间:2019-06-18

本文共 3651 字,大约阅读时间需要 12 分钟。

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

你可能感兴趣的文章
python和pywin32实现窗口查找、遍历和点击
查看>>
第二章 概率图模型的基本原理
查看>>
Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
查看>>
Nginx反向代理,负载均衡,redis session共享,keepalived高可用
查看>>
CentOS7 yum 安装git
查看>>
sublime text 3浅色主题
查看>>
数据结构之红黑树(三)——删除操作
查看>>
html5视频标签
查看>>
JAVA进阶-注解
查看>>
三元表达式之理解/jquery源代码分析之$.inArray实现
查看>>
STM32 mdk软件仿真时过不去时钟的问题
查看>>
(转)让Spring自动扫描和管理Bean
查看>>
Spark Streaming概念学习系列之Spark Streaming容错
查看>>
Windows Server 2003 用户账户的密码和用户配置文件
查看>>
单例模式
查看>>
使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞
查看>>
老旧的金融机构,是时候赶赶云计算的时髦了
查看>>
晶澳向埃及11MW混合发电项目供应光伏组件
查看>>
国产x86 CPU性能达Intel的80%?
查看>>
用友网络陈强兵:企业互联网需解决五大问题
查看>>