c# 通过配置自动附加数据库

using System; 
using System.Collections.Generic; 
using System.Windows.Forms; 
using System.Data.SqlClient; 
using System.Data; 
using System.ServiceProcess; 

namespace AdminZJC.DataBaseControl 
{ 
 /// <summary> 
 /// 数据库操作控制类 
 /// </summary> 
 public class DataBaseControl 
 { 
 /// <summary> 
 /// 数据库连接字符串 
 /// </summary> 
 public string ConnectionString; 

 /// <summary> 
 /// SQL操作语句/存储过程 
 /// </summary> 
 public string StrSQL; 

 /// <summary> 
 /// 实例化一个数据库连接对象 
 /// </summary> 
 private SqlConnection Conn; 

 /// <summary> 
 /// 实例化一个新的数据库操作对象Comm 
 /// </summary> 
 private SqlCommand Comm; 

 /// <summary> 
 /// 要操作的数据库名称 
 /// </summary> 
 public string DataBaseName; 

 /// <summary> 
 /// 数据库文件完整地址 
 /// </summary> 
 public string DataBase_MDF; 

 /// <summary> 
 /// 数据库日志文件完整地址 
 /// </summary> 
 public string DataBase_LDF; 

 /// <summary> 
 /// 备份文件名 
 /// </summary> 
 public string DataBaseOfBackupName; 

 /// <summary> 
 /// 备份文件路径 
 /// </summary> 
 public string DataBaseOfBackupPath; 

 /// <summary> 
 /// 执行创建/修改数据库和表的操作 
 /// </summary> 
 public void DataBaseAndTableControl() 
 { 
 try 
 { 
 Conn = new SqlConnection(ConnectionString); 
 Conn.Open(); 

 Comm = new SqlCommand(); 
 Comm.Connection = Conn; 
 Comm.CommandText = StrSQL; 
 Comm.CommandType = CommandType.Text; 
 Comm.ExecuteNonQuery(); 

 MessageBox.Show("数据库操作成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 catch (Exception ex) 
 { 
 MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 finally 
 { 
 Conn.Close(); 
 } 
 } 

 /// <summary> 
 /// 附加数据库 
 /// </summary> 
 public void AddDataBase() 
 { 
 try 
 { 
 Conn = new SqlConnection(ConnectionString); 
 Conn.Open(); 

 Comm = new SqlCommand(); 
 Comm.Connection = Conn; 
 Comm.CommandText = "sp_attach_db"; 

 Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar)); 
 Comm.Parameters[@"dbname"].Value = DataBaseName; 
 Comm.Parameters.Add(new SqlParameter(@"filename1", SqlDbType.NVarChar)); 
 Comm.Parameters[@"filename1"].Value = DataBase_MDF; 
 Comm.Parameters.Add(new SqlParameter(@"filename2", SqlDbType.NVarChar)); 
 Comm.Parameters[@"filename2"].Value = DataBase_LDF; 

 Comm.CommandType = CommandType.StoredProcedure; 
 Comm.ExecuteNonQuery(); 

 MessageBox.Show("附加数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 catch (Exception ex) 
 { 
 MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 finally 
 { 
 Conn.Close(); 
 } 
 } 

 /// <summary> 
 /// 分离数据库 
 /// </summary> 
 public void DeleteDataBase() 
 { 
 try 
 { 
 Conn = new SqlConnection(ConnectionString); 
 Conn.Open(); 

 Comm = new SqlCommand(); 
 Comm.Connection = Conn; 
 Comm.CommandText = @"sp_detach_db"; 

 Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar)); 
Comm.Parameters[@"dbname"].Value = DataBaseName; 

 Comm.CommandType = CommandType.StoredProcedure; 
 Comm.ExecuteNonQuery(); 

 MessageBox.Show("分离数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 catch (Exception ex) 
 { 
 MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 finally 
 { 
 Conn.Close(); 
 } 
 } 

 /// <summary> 
 /// 备份数据库 
 /// </summary> 
 public void BackupDataBase() 
 { 
 try 
 { 
 Conn = new SqlConnection(ConnectionString); 
 Conn.Open(); 

 Comm = new SqlCommand(); 
 Comm.Connection = Conn; 
 Comm.CommandText = "use master;backup database @dbname to disk = @backupname;"; 

 Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar)); 
 Comm.Parameters[@"dbname"].Value = DataBaseName; 
 Comm.Parameters.Add(new SqlParameter(@"backupname", SqlDbType.NVarChar)); 
 Comm.Parameters[@"backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName; 

 Comm.CommandType = CommandType.Text; 
 Comm.ExecuteNonQuery(); 

 MessageBox.Show("备份数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 catch (Exception ex) 
 { 
 MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 finally 
 { 
 Conn.Close(); 
 } 
 } 

 /// <summary> 
 /// 还原数据库 
 /// </summary> 
 public void ReplaceDataBase() 
 { 
 try 
 { 
 string BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName; 
 Conn = new SqlConnection(ConnectionString); 
 Conn.Open(); 

 Comm = new SqlCommand(); 
 Comm.Connection = Conn; 
 Comm.CommandText = "use master;restore database @DataBaseName From disk = @BackupFile with replace;"; 

 Comm.Parameters.Add(new SqlParameter(@"DataBaseName", SqlDbType.NVarChar)); 
 Comm.Parameters[@"DataBaseName"].Value = DataBaseName; 
 Comm.Parameters.Add(new SqlParameter(@"BackupFile", SqlDbType.NVarChar)); 
 Comm.Parameters[@"BackupFile"].Value = BackupFile; 

 Comm.CommandType = CommandType.Text; 
 Comm.ExecuteNonQuery(); 

 MessageBox.Show("还原数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 catch (Exception ex) 
 { 
 MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
 } 
 finally 
 { 
 Conn.Close(); 
 } 
 } 
 } 
} 

/* 
 ///调用事例: 
  
    还原数据库 
 private void button0_Click(object sender, EventArgs e) 
 { 
 DataBaseControl DBC = new DataBaseControl(); 
 DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master"; 
 DBC.DataBaseName = "MyDatabase"; 
 DBC.DataBaseOfBackupName = @"back.bak"; 
 DBC.DataBaseOfBackupPath = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\"; 
 DBC.ReplaceDataBase(); 
 } 
  
    附加数据库 
 private void button1_Click_1(object sender, EventArgs e) 
 { 
 DataBaseControl DBC = new DataBaseControl(); 
 DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master"; 
 DBC.DataBaseName = "MyDatabase"; 
 DBC.DataBase_MDF = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\MyDatabase_Data.MDF"; 
 DBC.DataBase_LDF = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\MyDatabase_Log.LDF"; 
 DBC.AddDataBase(); 
 } 
  
    备份数据库 
 private void button2_Click(object sender, EventArgs e) 
 { 
 DataBaseControl DBC = new DataBaseControl(); 
 DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master"; 
 DBC.DataBaseName = "MyDatabase"; 
 DBC.DataBaseOfBackupName = @"back.bak"; 
 DBC.DataBaseOfBackupPath = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\"; 
 DBC.BackupDataBase(); 
 } 
  
    分离数据库 
 private void button3_Click(object sender, EventArgs e) 
 { 
 DataBaseControl DBC = new DataBaseControl(); 
 DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master"; 
 DBC.DataBaseName = "MyDatabase"; 
 DBC.DeleteDataBase(); 
 } 
posted @ 2014-03-10 18:03  359444066  阅读(367)  评论(0编辑  收藏  举报