• 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;
            }
    

  • 相关阅读:
    个人阅读作业1
    个人项目-词频统计
    Android中BroadcastReceiver的两种注册方式(静态和动态)详解
    JAVA装饰者模式(从现实生活角度理解代码原理)
    博客维护停止,需要的伙伴们移步http://blog.csdn.net/panhouye
    Android中EditText设置输入条件
    Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)
    Android中调用文件管理器并返回选中文件的路径
    java中打印实心菱形以及空心菱形的方法
    Android中使用findViewByMe提升组件查找效率
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234298.html
Copyright © 2020-2023  润新知