知识大全 C#附加数据库

Posted 数据库

篇首语:不曾扬帆,何以至远方。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#附加数据库相关的知识,希望对你有一定的参考价值。

C#附加数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  近段时间学习了如何用安装包将数据库一起附加进去 代替了以往需要用户手工附加的方式

  /// <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(@ filename SqlDbType NVarChar));

  Comm Parameters[@ filename ] Value = DataBase_MDF;

  Comm Parameters Add(new SqlParameter(@ filename SqlDbType NVarChar));

  Comm Parameters[@ filename ] Value = DataBase_LDF;

  Comm CommandType = CommandType StoredProcedure; //此处一定要用存储过程 还有我也认识到存储过程的参数的写法不同与SQL语句 在查询分析器中写附加数据库的语法为exec sp_attach_db @dbname=N 数据库名 @filename =N MDF文件路径 @filename =N LDF文件路径 按照我的推测 存储过程方式添加参数后它的值直接跟在后面了

  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 btnAttach_Click(object sender EventArgs e)

  

  DataBaseControl DBC = new DataBaseControl();

  DBC ConnectionString = Data Source=(local);User id=用户名;Password=密码; Initial Catalog=master ;

  DBC DataBaseName = LabelLive ;

  DBC DataBase_MDF = @ C:\\Program Files\\Microsoft SQL Server\\MSSQL \\MSSQL\\Data\\LabelLive MDF ;

  DBC DataBase_LDF = @ C:\\Program Files\\Microsoft SQL Server\\MSSQL \\MSSQL\\Data\\LabelLive_Log LDF ;

  DBC AddDataBase();

  

  private void btnDetach_Click(object sender EventArgs e)

  

  DataBaseControl DBC = new DataBaseControl();

  DBC ConnectionString = Data Source=(local);User id=用户名;Password=密码; Initial Catalog=master ;

  DBC DataBaseName = LabelLive ;

  DBC DeleteDataBase();

  

  private void btnBackup_Click(object sender EventArgs e)

  

  DataBaseControl DBC = new DataBaseControl();

  DBC ConnectionString = Data Source=(local);User id=用户名;Password=密码; Initial Catalog=master ;

  DBC DataBaseName = LabelLive ;

  DBC DataBaseOfBackupName = @ LabelLive bak ;

  DBC DataBaseOfBackupPath = @ D:\\ ;

  DBC BackupDataBase();

  

  private void btnRestore_Click(object sender EventArgs e)

  

  DataBaseControl DBC = new DataBaseControl();

  DBC ConnectionString = Data Source=(local);User id=用户名;Password=密码; Initial Catalog=master ;

  DBC DataBaseName = LabelLive ;

  DBC DataBaseOfBackupName = @ LabelLive bak ;

  DBC DataBaseOfBackupPath = @ D:\\ ;

  DBC ReplaceDataBase();

cha138/Article/program/net/201311/12075

相关参考

知识大全 MSSQL Server2000数据库分离与附加

MSSQLServer2000数据库分离与附加  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如

知识大全 oracle附加的字符串

  现在你可以通过字符串建立索引提高性能  许多PL/SQL程序对数据进行操作通常是通过使用SQL在数据库中直接操作数据你经常还需要在PL/SQL程序本身内声明和管理数据这个程序数据可能由一些单独的值

知识大全 C#如何连接MySql数据库

C#如何连接MySql数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近两天在解决C#连

知识大全 C#连接各类数据库的方法集合

C#连接各类数据库的方法集合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文列出了C#连接A

知识大全 C#如何使用数据库

C#如何使用数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库在我们开发项目中那是最常

知识大全 C#创建SQL Server数据库浅析

C#创建SQLServer数据库浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#语言有很

知识大全 c#中连接ODBC数据库

c#中连接ODBC数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    usingSyste

知识大全 C#中读取数据库中Image数据

C#中读取数据库中Image数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DataRead

知识大全 C#语言学习:C#数据报编程之测试程序

C#语言学习:C#数据报编程之测试程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#中自定

知识大全 C#操作Access数据库的例子

C#操作Access数据库的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  添加  usin