科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[冷枫]安装部署中的数据库打包和快捷方式启动浏览器

[冷枫]安装部署中的数据库打包和快捷方式启动浏览器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

安装部署中的数据库打包和快捷方式启动浏览器

作者:冷枫 来源:CSDN 2007年9月22日

关键字: 冷枫 安装 打包 快捷方式 浏览器

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

前一段时间,因为工作的需要,学习了一些.net的部署。在打包的过程中遇到了几个问题:

1、  数据库脚本打包,如何修改Web.config文件中的数据联接

2、  数据库脚本中的方法和视图打包时要注意的问题

3、  如何使创建的快捷方式启动IE浏览器

对于如何打包,建立部署工程,MSDN和网上的一些资料说的很清楚,在这里不再赘述。针对上面两个问题提做一下总结:

1、  首先我们要生成数据库脚本,保存在文件中,如:DBScript.sql。注意:脚本中的“go”要全部去掉,视图和方法不要生成到一起,后面会讲到。

2、  要生成数据库就需要用户SqlServer的用户名密码,这时需要用户自己输入,我们要给用户定义一个输入界面,打开部署项目(比如:我这里叫SetUp)的用户界面,在安装-启动中添加一个用户界面


我选择的是文本框(
A),然后设置此文本框的属性,如下图:


现在只需要输入用户名和密码的两个文本框,注意:有两个属性
STRUSERSTRPASS

3、  有了用户的用户名和密码,我们就可以根据他们生成数据库,这时,要建立一个用户自定义操作,在这个过程中,我们先要建立一个安装类,在项目中添加一个Install类库,添加一个安装程序类,这个类继承自System.Configuration. Install.Installer

定义这个类的目的是加入我们需要的一些步骤,这里我们要加入数据库的建立和修改Web.Config中的数据联接,主要是重写Install方法。

第一步:获得用户输入的用户名和密码

        private string strUser = "";

        private string strPass = "";

 

public override void Install(IDictionary stateSaver)

        {

            this.strUser = this.Context.Parameters["strUser"];

            if(this.Context.Parameters["strPass"] != null)

                this.strPass = this.Context.Parameters["strPass"];

}

第二步:建立数据库及数据库表

将刚才生成的数据库脚本添加到Install项目下,修改其属性中的生成操作为“嵌入的资源”,编写相应的代码

protected void  AddDBTable(string strDBName )

        {

            try

            {

                //Create the database.

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

                // Create the tables.

                ExecuteSql(strDBName, GetSql("DBScript.sql"));

                ExecuteSql(strDBName, GetSql("Fuction.sql"));

                ExecuteSql(strDBName, GetSql("View.sql"));

            }

            catch(Exception ex)

            {

                throw ex;

            }

}

 

private void ExecuteSql(string DatabaseName , string Sql)

        {

            SqlConnection sqlConnection1 = new SqlConnection("user id=" + strUser + ";password="+strPass+";database=master;server=(local)") ;

            SqlCommand Command  = new SqlCommand(Sql, sqlConnection1);

            Command.Connection.Open();

            Command.Connection.ChangeDatabase(DatabaseName);

           

            try

            {

                Command.ExecuteNonQuery();

            }

            catch(Exception ex)

            {

                throw ex;

            }

            finally

            {

                Command.Connection.Close();

            }      

        }

 

        private string  GetSql(string strName)

        {

            try

            {

                Assembly Asm = Assembly.GetExecutingAssembly();

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

                StreamReader reader= new StreamReader(strm);

                return reader.ReadToEnd();

            }

            catch(Exception ex)

            {

                throw ex;

            }                                                              

}

注意:这里有两个执行脚本Fuction.sqlView.sql,对于每一个FuctionView要单独使用一个脚本文件,因为每一个方法或视图的建立要求在查询语句的第一行,如果我们有两个方法的话,就要这样建立,如:要创建Function1Function2。就要建立两个脚本Function1.sqlFunction2.sql分别用来创建Function1Function2。(我没有找到其他的方法解决这个问题,如果大家有更好的方法,欢迎给我指出)

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章