一个操作数据库的类(备份,还原,分离,附加,添加删除用户等操作)

/** 更新时间 :2011-09-01 16:06* 更 新 人 :苏飞*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;namespace Sql2005
{/// /// Sql数据操作帮助类,包括数据的创建,删除,修改密码等一系统列操作/// public abstract class DBT_SqlHelper{#region 连接Sql数据部分/// /// 数据库连接字符串/// public static readonly string connectionString = System.Configuration.ConfigurationSettings.AppSettings["con"].ToString().Trim();#region//ExecteNonQuery方法/// ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。/// 使用参数数组形式提供参数列表 /// /// 一个有效的数据库连接字符串/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)/// 存储过程的名字或者 T-SQL 语句/// 以数组形式提供SqlCommand命令中用到的参数列表/// 返回一个数值表示此SqlCommand命令执行后影响的行数public static int ExecteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(connectionString)){//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();//清空SqlCommand中的参数列表cmd.Parameters.Clear();return val;}}/// ///存储过程专用/// /// 存储过程的名字/// 以数组形式提供SqlCommand命令中用到的参数列表/// 返回一个数值表示此SqlCommand命令执行后影响的行数public static int ExecteNonQueryProducts(string cmdText, params SqlParameter[] commandParameters){return ExecteNonQuery(DBT_SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);}/// ///Sql语句专用/// /// T_Sql语句/// 以数组形式提供SqlCommand命令中用到的参数列表/// 返回一个数值表示此SqlCommand命令执行后影响的行数public static int ExecteNonQueryText(string cmdText, params SqlParameter[] commandParameters){return ExecteNonQuery(DBT_SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);}#endregion/// /// 为执行命令准备参数/// /// SqlCommand 命令/// 已经存在的数据库连接/// 数据库事物处理/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)/// Command text,T-SQL语句 例如 Select * from Products/// 返回带参数的命令private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms){//判断数据库连接状态if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandText = cmdText;//判断是否需要事物处理if (trans != null)cmd.Transaction = trans;cmd.CommandType = cmdType;if (cmdParms != null){foreach (SqlParameter parm in cmdParms)cmd.Parameters.Add(parm);}}#endregion/// /// 根据条件创建数据库/// /// 用于指定数据文件的逻辑名称/// 指定数据文件的操作系统文件名。其后面的参数是创建数据文件时定义的物理文件的路径名和文件名/// 指定数据文件的大小/// 指定数据文件可以增长到的最大大小/// /// 指定数据文件的增长增量,其值不能超过maxsize设置。0表示不增长。,默认值为MB。如果指定为%,/// 则增量大小为发生时文件大小的指定百分比,如果没有指定,默认值为10%。/// /// 用于指定数据日志的逻辑名称/// 指定数据日志的操作系统文件名。其后面的参数是创建数据日志时定义的物理文件的路径名和文件名/// 指定数据日志的大小/// 指定数据日志可以增长到的最大大小/// /// 指定数据日志的增长增量,其值不能超过maxsize设置。0表示不增长。,默认值为MB。如果指定为%,/// 则增量大小为发生时文件大小的指定百分比,如果没有指定,默认值为10%。/// /// 在创建数据库是否删除同名的现存数据库public static void CreateDatabase(string dbName, string dbFileName, string dbSize, string dbMaxSize, string dbFileGrowth,string logName, string logFileName, string logSize, string logMaxSize, string logFileGrowth, Boolean isDeletedb){#region 检查是否存在数据dbNameStringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO");if (isDeletedb){dbSql.Append("IF  EXISTS(SELECT * FROM  sysdatabases WHERE  name ='@dbName')begin DROP DATABASE @dbName  end");}#endregion#region 创建数据库//开始创建数据并指定名称dbSql.Append("CREATE DATABASE @dbName ON  PRIMARY (");//数据库名dbSql.Append("NAME='@ dbName" + "_data',");//数据路经dbSql.Append("FILENAME='@dbFileName', ");//大小dbSql.Append("SIZE=@dbSize, ");//最大值dbSql.Append("MAXSIZE= @dbMaxSize,");//增长值dbSql.Append("FILEGROWTH=@dbFileGrowth)");#endregion#region 创建数据库日志//开始创建日志文件dbSql.Append("LOG ON (");//日志文件名dbSql.Append("NAME='@logName" + "_log',");//日志文件路经dbSql.Append("FILENAME='@logFileName',");//大小dbSql.Append("SIZE=@logSize,");//最大值dbSql.Append("MAXSIZE=@logMaxSize,");//增加值dbSql.Append("FILEGROWTH=@logFileGrowth ) GO");#endregion#region 开始执行创建命令//设置参数列表SqlParameter[] parameter = {new SqlParameter("@dbName", dbName), new SqlParameter("@dbFileName", dbFileName),new SqlParameter("@dbSize", dbSize),new SqlParameter("@dbMaxSize", dbMaxSize),new SqlParameter("@dbFileGrowth", dbFileGrowth),new SqlParameter("@logName", logName),new SqlParameter("@logFileName", logFileName),new SqlParameter("@logSize", logSize),new SqlParameter("@logMaxSize", logMaxSize),new SqlParameter("@logFileGrowth", logFileGrowth)};DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}/// /// 删除指定名称的数据库文件以及日志文件/// /// 数据库名称public static void DropDatabase(string dbName){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO  ");dbSql.Append("DROP DATABASE @dbName");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = { new SqlParameter("@dbName", dbName) };DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), parameter);#endregion}/// /// 备份数据库/// /// 数据库文件名/// 路经包括盘符和文件名以及扩展名称一般为“_dat”public static void BackupDatabase(string dbName, string dbFileName){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO  ");dbSql.Append("BACKUP DATABASE @dbName TO DISK ='@dbFileName'");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = {new SqlParameter("@dbName", dbName), new SqlParameter("@dbFileName", dbFileName)};DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), parameter);#endregion}/// /// 恢复数据库/// /// 数据库名/// 路经包括盘符和文件名以及扩展名称一般为“_dat”public static void RestoreDatabase(string dbName, string dbFileName){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO  ");dbSql.Append("restore database @dbName from disk='@dbFileName'  WITH REPLACE,RECOVERY");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = {new SqlParameter("@dbName", dbName), new SqlParameter("@dbFileName", dbFileName)};DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}/// /// 附加数据库文件/// /// 附加时的新名称可以是原名,也可以得新取一个新名称/// 数据文件的路径包括盘符和文件名以及扩展名/// 日志文件的路径包括盘符和文件名以及扩展名public static void OnlineDatabase(string newDbName, string dbFileName, string logFileName){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO  ");dbSql.Append("EXEC sp_attach_db @ newDbName,'@dbFileName','@logFileName'");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = {new SqlParameter("@dbFileName", dbFileName), new SqlParameter("@logFileName", logFileName)};DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}/// /// 分离数据库文件/// /// 数据库名称public static void OfflineDatabase(string dbName){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO  ");dbSql.Append(" exec  sp_detach_db '@dbName' ");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = { new SqlParameter("@dbName", dbName) };DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}/// /// 重新设置用户的密码/// /// 新密码/// 登录用户名public static void ResetPassword(string newPassword, string userName){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE master ");dbSql.Append("  GO  ");dbSql.Append("EXEC   sp_password null,'@newPassword','@userName'");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = {new SqlParameter("@newPassword", newPassword),new SqlParameter("@userName", userName) };DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}/// /// 分离数据库文件/// /// 数据库名称/// 新密码/// 登录用户名public static void CreateDbUser(string dbName, string userName, string passWord){#region 构造Sql代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE  " + dbName);dbSql.Append("  GO  ");dbSql.Append("EXEC sp_addlogin N'@userName','@passWord'");dbSql.Append("EXEC sp_grantdbaccess N'@userName'");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = { new SqlParameter("@dbName",userName),new SqlParameter("@userName", userName),new SqlParameter("@passWord", passWord)};DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}/// /// 给指定数据的指定用户授于本数据库的所有操作权限/// /// 数据库名称/// 用户名称public static void AddRoleToDbUser(string dbName, string userName){#region 构造代码StringBuilder dbSql = new StringBuilder();//设置当前数据库dbSql.Append("USE " + dbName);dbSql.Append("GO ");dbSql.Append("EXEC sp_addrolemember N'@dbName', N'@userName'");#endregion#region 开始执行命令//设置参数列表SqlParameter[] parameter = { new SqlParameter("@dbName",userName),new SqlParameter("@userName", userName)};DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null);#endregion}}
}

  


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部