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();
     } 
  • 相关阅读:
    2018-2019-2 20165235 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
    2018-2019 20165235 网络对抗 Exp5 MSF基础
    2018-2019 20165235 网络对抗 Exp4 恶意代码分析
    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践
    2018-2019-2 20165235《网络对抗技术》Exp2 后门原理与实践
    Exp1 PC平台逆向破解 20165235 祁瑛
    2018-2019 20165235 网络对抗技术 Exp0:kali的安装
    20165302 Exp9 Web安全基础
    20165302 Exp 8 Web基础
    2018-2019-2 20165302 Exp7 网络欺诈防范
  • 原文地址:https://www.cnblogs.com/zengwei/p/814080.html
Copyright © 2011-2022 走看看