www.pudn.com > MainPrj_CarShop.rar > DBBackAndStore.cs


using System; 
using System.Data; 
using System.Data.SqlClient; 
 
namespace MainPrj_CarShop 
{ 
 
		///  
		/// 备份和还原sql数据库 
		///  
		public class BackupDataAndStore 
		{ 
			private SqlConnection conn; 
			public BackupDataAndStore() 
			{ 
				// 
				// TODO: 在此处添加构造函数逻辑 
				// 
				string sql="server=.;uid=sa;pwd=;persist security info=False;database=master"; 
				conn=new SqlConnection(sql); 
			} 
 
			///  
			/// 备份数据库 
			///  
			///  
			///  
			///  
			public bool BackUpDataBase(string databasename,string backuptodatabase) 
			{ 
				string procname; 
				string sql; 
				 
				 
				conn.Open();         
 
				 
				procname="sp_dropdevice"; 
				SqlCommand sqlcmd1=new SqlCommand(procname,conn); 
				sqlcmd1.CommandType =CommandType.StoredProcedure; 
 
				SqlParameter sqlpar=new SqlParameter(); 
				sqlpar=sqlcmd1.Parameters.Add("@logicalname",SqlDbType.VarChar,20); 
				sqlpar.Direction =ParameterDirection.Input; 
				sqlpar.Value =databasename; 
 
				try         
				{ 
					sqlcmd1.ExecuteNonQuery(); 
				} 
				catch(SqlException ex) 
				{ 
					throw ex; 
				} 
				catch(Exception ex) 
				{ 
					throw ex; 
				} 
 
				 
				procname="sp_addumpdevice"; 
				SqlCommand sqlcmd2=new SqlCommand(procname,conn); 
				sqlcmd2.CommandType =CommandType.StoredProcedure; 
 
				sqlpar=sqlcmd2.Parameters.Add("@devtype",SqlDbType.VarChar,20); 
				sqlpar.Direction =ParameterDirection.Input; 
				sqlpar.Value ="disk"; 
 
             
				sqlpar=sqlcmd2.Parameters.Add("@logicalname",SqlDbType.VarChar,20); 
				sqlpar.Direction =ParameterDirection.Input; 
				sqlpar.Value =databasename; 
 
				sqlpar=sqlcmd2.Parameters.Add("@physicalname",SqlDbType.NVarChar,260); 
				sqlpar.Direction =ParameterDirection.Input; 
				sqlpar.Value =backuptodatabase+".bak"; 
 
             
				try 
				{ 
					int i=sqlcmd2.ExecuteNonQuery(); 
				} 
				catch(SqlException ex) 
				{ 
					throw ex; 
				} 
				catch(Exception ex) 
				{ 
					throw ex; 
				} 
 
				 
				sql="BACKUP DATABASE "+databasename +" TO "+databasename +" WITH INIT"; 
				SqlCommand sqlcmd3=new SqlCommand(sql,conn); 
				sqlcmd3.CommandType =CommandType.Text; 
				try 
				{ 
					sqlcmd3.ExecuteNonQuery(); 
				} 
				catch(SqlException ex) 
				{ 
					throw ex; 
				} 
				catch(Exception ex) 
				{ 
					throw ex; 
				} 
				finally 
				{ 
					conn.Close(); 
				} 
				conn.Close(); 
 
				return true; 
 
			} 
 
			///  
			/// 还原指定的数据库文件 
			///  
			///  
			///  
			///  
			public bool RestoreDataBase(string databasename,string databasefile ) 
			{ 
 
				string sql="RESTORE DATABASE "+databasename +" from DISK = '"+databasefile +"' "; 
				SqlCommand sqlcmd=new SqlCommand(sql,conn); 
				sqlcmd.CommandType =CommandType.Text; 
				 
				conn.Open(); 
 
				try 
				{ 
						sqlcmd.ExecuteNonQuery(); 
				} 
				catch(SqlException ex) 
				{ 
					if(conn.State==ConnectionState.Closed) 
					{ 
						conn.Open(); 
						sqlcmd.ExecuteNonQuery(); 
						return true; 
					} 
					else 
						throw ex; 
				} 
				catch(Exception ex) 
				{ 
					throw ex; 
				} 
				finally 
				{ 
					conn.Close(); 
				} 
 
				return true; 
			} 
 
		} 
	 
 
}