zoukankan      html  css  js  c++  java
  • 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;
            }
    

  • 相关阅读:
    Spring中的JDBC API
    Spring中的AOP(二)
    Nginx服务器代理静态资源
    Intellij IDEA配置Maven(内置Maven和修改本地仓库地址和阿里云中央仓库)
    Java函数传参(String的不可变性)
    Java中的前向引用与类初始化顺序
    【解决】com.mysql.cj.jdbc.Driver failed to unregister it /Abandoned connection cleanup thread
    SSM框架项目结构以及版本匹配
    Web4.0中web.xml头信息
    【解决】org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [4.0]
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234298.html
Copyright © 2011-2022 走看看