zoukankan      html  css  js  c++  java
  • 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();
     } 
  • 相关阅读:
    不务正业系列-浅谈《过气堡垒》,一个RTS玩家的视角
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 40. Combination Sum II
    138. Copy List with Random Pointer
    310. Minimum Height Trees
    4. Median of Two Sorted Arrays
    153. Find Minimum in Rotated Sorted Array
    33. Search in Rotated Sorted Array
    35. Search Insert Position
    278. First Bad Version
  • 原文地址:https://www.cnblogs.com/zengwei/p/814080.html
Copyright © 2011-2022 走看看