首页 > 编程 > C# > 正文

C#创建数据库及附加数据库的操作方法

2019-10-29 21:25:28
字体:
来源:转载
供稿:网友

本文实例讲述了C#创建数据库及附加数据库的操作方法。分享给大家供大家参考,具体如下:

/// <summary>/// 附加数据库方法/// </summary>/// <param name="strSql">连接数据库字符串,连接master系统数据库</param>/// <param name="DataName">数据库名字</param>/// <param name="strMdf">数据库文件MDF的路径</param>/// <param name="strLdf">数据库文件LDF的路径</param>/// <param name="path">安装目录</param>private  void CreateDataBase( string strSql, string DataName, string strMdf, string strLdf, string path){  SqlConnection myConn = new SqlConnection(strSql);  String str = null ;  try  {   str = " EXEC sp_attach_db @dbname='"+DataName+"',@filename1='"+strMdf+"',@filename2='"+strLdf+"'";   SqlCommand myCommand = new SqlCommand(str, myConn);   myConn.Open();   myCommand.ExecuteNonQuery();   MessageBox.Show("数据库安装成功!点击确定继续");//需Using System.Windows.Forms  }  catch(Exception e)  {   MessageBox.Show("数据库安装失败!" + e.Message+"/n/n"+"您可以手动附加数据");   System.Diagnostics.Process.Start(path);//打开安装目录  }  finally  {   myConn.Close();  }}public override void Install(System.Collections.IDictionary stateSaver){  string server = this.Context.Parameters["server"];//服务器名称  string uid = this.Context.Parameters["user"];//SQlServer用户名  string pwd = this.Context.Parameters["pwd"];//密码  string path = this.Context.Parameters["targetdir"];//安装目录  string strSql = "server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=master";//连接数据库字符串  string DataName = "JXC";//数据库名  string strMdf = path + @"JXC.mdf";//MDF文件路径,这里需注意文件名要与刚添加的数据库文件名一样!  string strLdf = path + @"jxc_log.ldf";//LDF文件路径  base.Install(stateSaver);  this.CreateDataBase(strSql, DataName, strMdf, strLdf, path);//开始创建数据库}/// <summary>/// 测试连接/// </summary>/// <param name="serverName"></param>/// <param name="dbName"></param>/// <param name="userName"></param>/// <param name="password"></param>private SqlConnection TestConnection(string serverName, string dbName, string userName, string password){    string connectionString = GetConnectionString(serverName, dbName, userName, password);    SqlConnection connection = new SqlConnection(connectionString);    try    {      if (connection.State != ConnectionState.Open)      {        connection.Open();      }      return connection;    }    catch    {      CloseConnection(connection);      throw new InstallException("安装失败!/n数据库配置有误,请正确配置信息!");    }}/// <summary>/// 得到连接字符串/// </summary>/// <param name="serverName"></param>/// <param name="dbName"></param>/// <param name="userName"></param>/// <param name="password"></param>/// <returns></returns>private string GetConnectionString(string serverName, string dbName, string userName, string password){    string connectionString = "Data Source={0};Initial Catalog={1};User ID={2};Password={3}";    connectionString = string.Format(connectionString, serverName, dbName, userName, password);    return connectionString;}/// <summary>/// 创建数据库/// </summary>/// <param name="serverName"></param>/// <param name="dbName"></param>/// <param name="userName"></param>/// <param name="password"></param>/// <param name="connection"></param>/// <param name="stateSaver"></param>public int CreateDataBase(SqlConnection connection){    int result = -1;    connection.ChangeDatabase("master");    string createDBSql = @" if Exists(select 1 from sysdatabases where [name]=N'{0}')        begin        drop database {0}        end        GO        CREATE DATABASE {0} ";    createDBSql = string.Format(createDBSql, _dbName);    //因为有Go在SQLCommand中不认识,所以以Go为分隔符取sql语句    char[] split = new char[] { 'G', 'O' };    string[] sqlList = createDBSql.Split(split);    SqlCommand command = null;    try    {      command = connection.CreateCommand();      command.CommandType = System.Data.CommandType.Text;      foreach (string sqlItem in sqlList)      {        if (sqlItem.Length > 2)        {          command.CommandText = sqlItem;          result = command.ExecuteNonQuery();        }      }      return result;    }    catch    {      CloseConnection(connection);      command.Dispose();      throw new InstallException("安装失败!/n数据库配置不正确!");    }}/// <summary>/// 分隔SQL语句/// </summary>/// <param name="sql"></param>/// <returns></returns>private string[] splitSql(string sql){    Regex regex = new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline);    string[] sqlList = regex.Split(sql.ToUpper());    return sqlList;}


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表