ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Visual Studio 中的部署-安装时使用自定义操作创建数据库

Visual Studio 中的部署-安装时使用自定义操作创建数据库

原创 Linux操作系统 作者:kirinri 时间:2009-04-14 09:42:51 0 删除 编辑
Normal 0 false false false MicrosoftInternetExplorer4 Visual Studio 中的部署

演练:安装时使用自定义操作创建数据库

http://msdn.microsoft.com/zh-cn/library/49b92ztk(VS.80).aspx

创建安装程序类

1.     文件菜单上单击新建项目

2.     新建项目对话框中,选择项目类型窗格中的“Visual Basic 项目,然后选择模板窗格中的类库。在名称框中键入 DBCustomAction

3.     项目菜单上单击添加新项

4.     添加新项对话框中选择安装程序类。在名称框中键入 VbDeployInstaller.vb

创建数据连接对象

1.     服务器资源管理器中,选择数据连接。右击并选择添加连接

2.     选择数据源对话框中,选择“Microsoft SQL Server”

3.     添加连接对话框中,执行以下操作:

a.      服务器名称下拉列表中,键入或选择一个服务器名称。

b.     选择使用 Windows 身份验证

c.      数据库框中,键入 master

d.     单击确定关闭对话框。

4.     数据菜单中,单击添加新数据源,然后使用向导添加在之前步骤中建立的连接。若要验证数据源是否在项目中,请单击数据菜单上的显示数据源

创建包含 SQL 语句的文本文件以创建数据库

1.     在解决方案资源管理器中,选择 DBCustomAction 项目。在项目菜单上选择添加新项

2.     添加新项对话框中,选择文本文件。在名称框中,键入 sql.txt(必须小写)。

3.     将以下内容添加到 sql.txt 文件中:

 

CREATE TABLE [dbo].[Employees] (
[Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Rsvp] [int] NULL ,
[Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY];
 
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD 
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
(
[Name]
) ON [PRIMARY];

4.     解决方案资源管理器中选择 sql.txt。在属性窗口中,将“BuildAction”属性设置为嵌入的资源

将代码添加到安装程序类中以阅读文本文件 [自我测试使用C#代码]

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Reflection;

using System.Data.SqlClient;

 

namespace CustomAction

{

    partial class DeployInstaller

    {

        SqlConnection myTestConnection = new SqlConnection();

 

        ///

        /// Required designer variable.

        ///

        private System.ComponentModel.IContainer components = null;

 

        ///

        /// Clean up any resources being used.

        ///

        /// true if managed resources should be disposed; otherwise, false.

        protected override void Dispose(bool disposing)

        {

            if (disposing && (components != null))

            {

                components.Dispose();

            }

            base.Dispose(disposing);

        }

 

        #region Component Designer generated code

 

        ///

        /// Required method for Designer support - do not modify

        /// the contents of this method with the code editor.

        ///

        private void InitializeComponent()

        {

            components = new System.ComponentModel.Container();

        }

 

        #endregion

 

        private string GetSql(string name)

        {

            try

            {

                Assembly asm = Assembly.GetExecutingAssembly();

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

 

                StreamReader reader = new StreamReader(strm);

                return reader.ReadToEnd();

 

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

                return ex.Message;

            }

        }

 

 

        private void ExecuteSql(string databaseName, string sql)

        {

            SqlCommand command = new SqlCommand(sql, myTestConnection);

           

            myTestConnection.ConnectionString = @"Data Source=910.941.500.660;Initial Catalog=master;Persist Security Info=True;User ID=pa;Password=pa";

            command.Connection.Open();

            command.Connection.ChangeDatabase(databaseName);

            try

            {

                command.ExecuteNonQuery();

            }

            finally

            {

                command.Connection.Close();

            }

        }

 

        protected void AddDBTable(string strDBName)

        {

            try

            {

                ExecuteSql("master", " Create DataBase " + strDBName);

                ExecuteSql(strDBName, GetSql("SqlTest.txt"));

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

        }

        public override void Install(System.Collections.IDictionary stateSaver)

        {

            base.Install(stateSaver);

            AddDBTable(this.Context.Parameters["dbname"]);

        }

    }

}

 

创建部署项目

1.     文件菜单中单击添加,然后单击新建项目

2.     添加新项目对话框中,打开其他项目类型节点,在项目类型窗格中选择安装和部署项目。然后,在模板窗格中选择安装项目。在名称框中键入 DBCustomAction_Setup

3.     属性窗口中,选择“ProductName”属性并键入 DB Installer

4.     文件系统编辑器中,选择应用程序文件夹。在操作菜单上单击添加,然后单击项目输出

5.     添加项目输出组对话框中,为“DBCustomAction”项目选择主输出

创建自定义安装对话框

1.     解决方案资源管理器中选择“DBCustomAction_Setup”项目。在视图菜单上指向编辑器,然后选择用户界面

2.     用户界面编辑器中,选择安装下面的启动节点。在操作菜单上选择添加对话框

3.     添加对话框对话框中,选择文本框 (A)”,然后单击确定

4.     操作菜单上,选择上移。重复此步骤,直到文本框 (A)”对话框位于安装文件夹节点之上。

5.     属性窗口中,选择“BannerText”属性并键入指定数据库名称

6.     选择“BodyText”属性并键入此对话框允许指定将在数据库服务器上创建的数据库的名称

7.     选择“Edit1Label”属性并键入数据库名称:

8.     选择“Edit1Property”属性并键入 CUSTOMTEXTA1

9.     选择“Edit2Visible”“Edit3Visible”“Edit4Visible”属性,将它们设置为“False”

创建自定义操作

1.     解决方案资源管理器中选择“DBCustomAction_Setup”项目。在视图菜单上指向编辑器,然后单击自定义操作

2.     自定义操作编辑器中选择安装节点。在操作菜单上选择添加自定义操作

3.     选择项目中的项对话框中,双击应用程序文件夹

4.     选择“DBCustomAction 的主输出(活动),然后单击确定关闭对话框。

5.     确保在自定义操作编辑器中选择了“DBCustomAction 的主输出(活动)项。在属性窗口中,选择“CustomActionData”属性并键入 /dbname=[CUSTOMTEXTA1]

6.     生成菜单上选择生成 DBCustomAction_Setup”

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12476590/viewspace-588925/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-21

  • 博文量
    257
  • 访问量
    498042