.net 添加自定义操作----安装数据库

半城伤御伤魂 提交于 2020-03-05 17:25:49
添加自定义操作----安装数据库

1)        在用户界面添à右击à添加对话框文本框(A)如果添加了文本框则必须要上移(右击要上移的文本框à上移)到安装地址之上。

2)        如果只安装一个数据库就把其Edit2Visible,Edit3Visible,Edit4Visible设置为false.把Edit1property定义一个变量名,例如PARA1。 

 3) 自定义用户操作,在资源管理器界面右击资源管理器à新建àC#(也可以是VB.NET),选择类库,命名为WebInstall 。

 4) 新建项目会自动生成一个class1.cs文件,把次文件删除。右击WebInstall添加新项à安装类,命名为Install.cs。

5)右击Install.csà视图设计界面,然后在服务器资源管理器中添加数据库master的连接,添加好后把这个连接拖到Install的设计界面。

6)在Install.cs文件中添加以下代码

       注:要添加应用添加应用

 using System.Reflection;

 using System.Data;

 using System.Data.SqlClient;

 using System.IO;

 安装数据库代码

     /// <summary>

        /// 获得配置文件中嵌入的文本文件

        /// </summary>

         /// <param name="Name">文件名</param>

         /// <returns></returns>

         private string GetSql(string Name)

         {          

            Assembly Asm = Assembly.GetExecutingAssembly();

             Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "."+Name);

             StreamReader reader = new StreamReader(strm);

             return reader.ReadToEnd();

         }

         /// <summary>

         /// 指定的数据库执行SQL语句

         /// </summary>

         /// <param name="DatabaseName">数据库名</param>

         /// <param name="sqlstring">SQL语句</param>

         /// <returns></returns>

         private void ExecuteSql(string DataBaseName,string sqlstring)

         {

             System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(sqlstring,sqlConn);

             Command.Connection.Open();

             Command.Connection.ChangeDatabase(DataBaseName);

             try

             {

                 Command.ExecuteNonQuery();

             }

             finally

             {

                 Command.Connection.Close();

             }

        }

         /// <summary>

         /// 创建数据库及数据库表

         /// </summary>

        /// <param name="DBName">数据库名</param>

         /// <param name="assemblyName">配件中数据库脚本资源的名称</param>

         /// <returns></returns>

         protected bool CreateDBAndTable(string DBName)

        {

            bool Restult = false;

             try

            {

                     ExecuteSql("master","CREATE DATABASE " + DBName);

                     ExecuteSql(DBName,GetSql("bbssql.txt"));

                     Restult = true;

              }      

            catch(Exception ex)

             {

 //次段代码为调试用可以不添加

                 StreamWriter sw = new StreamWriter(@"c:\SrInforSys.txt");

                 sw.WriteLine("[SrInforSys案装错误]");

                 sw.WriteLine(ex.Message.ToString());               

                 sw.Close();                    

     }

             return Restult;

         }

       /// <summary>

      /// 安装数据库

         /// </summary>

         /// <param name="stateSaver"></param>

         public override void Install(IDictionary stateSaver)

         {

             base.Install (stateSaver);

             if(!CreateDBAndTable(this.Context.Parameters["dbname1"].ToString()))

             throw new ApplicationException("创建数据库时出现严重错误!");

         }

 在添加安装数据库时一定要有创建数据库的脚本,并且把它存为.txt文件添加到WebInstall项目中了,右击该文件(例如,database.txt)à属性à生成操作,该为嵌入资源(这点很中要)。

 7)生成WebInstall.dll文件。在解决方案资源管理器中右击àWebSetup项目à视图à在文件系统,右击Web应用程序文件夹à添加à项目输出à选择WebInstall(主输出)à确定

 8)在解决方案资源管理器中右击àWebSetup项目à视图à自定义操作,在自定义操作界面区中右击安装à添加自定义操作à在Web应用程序文件夹à主输出来自WebInstall(活动)

 添加完后右击主输出来自WebInstall(活动)à属性,把customeActionData设置为/dbname=[PARA1](此处的dbname为要接受的参数名,PARA1就是前面添加的文本框中Edit1property)。

 9)编译WebSetup程序就可以了。

 如果有两个或者多个数据库时,就把文本框的其他输入框设置为true(Edit2Visible, Edit3Visible , Edit4Visible),并且在自定义操作中把customeActionData属性改为/dbname1=[PARA1] /dbname2=[PARA2] /dbname3=[PARA3] /dbname4=[PARA4](有几个写几个)中间必须用一个空格分隔。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!