zoukankan      html  css  js  c++  java
  • 安装程序自动安装数据库

    添加新项中添加安装程序类

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Configuration.Install;
    using System.IO;
    using System.Data.SqlClient;
    using System.Reflection;


    namespace DBCustomAction
    {
        
    /// <summary>
        
    /// DBCustomAction 的摘要说明。
        
    /// </summary>

        [RunInstaller(true)]
        
    public class DBCustomAction : System.Configuration.Install.Installer
        
    {
            
    /// <summary>
            
    /// 必需的设计器变量。
            
    /// </summary>

            private System.ComponentModel.Container components = null;
            
    private string strPass = "";

            
    public DBCustomAction()
            
    {
                
    // 该调用是设计器所必需的。
                InitializeComponent();

                
    // TODO: 在 InitComponent 调用后添加任何初始化
            }


            
    Component Designer generated code

            
    public override void Install(System.Collections.IDictionary stateSaver)
            
    {
            
                
    //入口
                strPass = this.Context.Parameters["strPass"];
                AddDBTable(
    "RequestSys");//RequestSys为数据库名称

            }

            
    private string  GetSql(string strName)
            
    {
                
    try
                
    {
                    
    //' Get the current assembly.
                    Assembly Asm = Assembly.GetExecutingAssembly();
                    
    // Resources are named using a fully qualified name
                    
                    Stream strm  
    = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + strName);
                    
                    
    //Read the contents of the embedded file.
                    StreamReader reader= new StreamReader(strm);//,System.Text.Encoding.Unicode);
                
                    
                    
    return reader.ReadToEnd();
                }

                
    catch
                
    {
                    
    return null;
                }

                                                                                                                                          
            }

            
    private void ExecuteSql(string DatabaseName , string Sql)
            
    {

                SqlConnection sqlConnection1 
    = new SqlConnection("user id=sa;password="+strPass+";database=master;server=(local)") ;
                SqlCommand Command  
    = new SqlCommand(Sql, sqlConnection1);
                Command.Connection.Open();
                Command.Connection.ChangeDatabase(DatabaseName);
                
                
    try
                
    {
                    Command.ExecuteNonQuery();
                }


                
    finally
                
    {
                    
    // Finally, blocks are a great way to ensure that the connection 
                    Command.Connection.Close();
                }

            
            }

            
    protected void  AddDBTable(string strDBName )
            
    {
                
    try
                
    {
                    
    //Create the database.
                    ExecuteSql("master""CREATE DATABASE " + strDBName);
                    
    // Create the tables.
                    ExecuteSql(strDBName, GetSql("sql.txt"));
                }

                
    catch
                
    {
                    
                }

            }

            

        }

    }

  • 相关阅读:
    共享库的使用(.so)文件
    C/C++ 的宏中#和##的作用和展开
    有趣的打字训练
    libtool 创建库的工具
    vcpkg-微软开发的VC++打包工具
    Q他中的乱码再理解
    关于头文件和源文件的分别
    std::set 中内部元素有序条件删除的理解
    python 的 字节码 导入使用
    Pychar-20170301快捷键
  • 原文地址:https://www.cnblogs.com/ghd258/p/262046.html
Copyright © 2011-2022 走看看