`
totoxian
  • 浏览: 1080034 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

在.NET程序安装包中附带 SQL SERVER数据库安装功能

阅读更多

.NET程序安装包中附带 SQL SERVER数据库安装功能

左直拳

一、 安装文件夹中添加数据库安装程序dbInstall.dll以及建数据库脚本data.sqldbInstall是一个自己编写的DLL,代码见附录。

二、 添加自定义功能。

方法:选定安装项目,鼠标右键,弹出快捷菜单,选视图-自定义操作。也可以直接点“解决方案资源管理器”上部的快捷图标。

进入“自定义操作”视图后,在“安装”目录下添加自定义操作,对应之前添加的dbInstall,命名为“安装数据库”。编辑属性,

CustomerActionData

/targetdir=[TARGETDIR] /dbfile="data.sql"

这是传递给数据库安装程序dbInstall.dll的参数。

附录:

dbInstall.dll

这是一个Windows应用程序。主要由两部分组成。

1、信息采集界面部分(dbpara.cs),采集必要的数据库安装信息,如下(不知道为什么,无法上传图片):

服务器 默认为(local)
数据库管理员帐户 默认为sa
数据库管理员密码
待安装数据库名称 自己填写

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 306pt; HEIGHT: 198pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/chenqu/LOCALS~1/Temp/msoclip1/01/clip_image001.png" o:title=""></imagedata></shape>

2、数据库安装部分(组件类dbInstall.cs

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

{

base.Install(stateSaver);

string dbFile = this.Context.Parameters["dbfile"];

if( dbFile == null || this.Context.Parameters["installstyle"] == null )

{

return;

}

//创建数据库

CREATEDB:

//激活信息采集界面

dbInstall.FrmDbpara dbpara = new dbInstall.FrmDbpara();

if( dbpara.ShowDialog() == DialogResult.Cancel )

{

throw(new InstallException("安装失败。"));

}

string server = dbpara.Server;//服务器

string user = dbpara.User; //数据库管理员帐号,如sa

string pwd = dbpara.Pwd; //数据库管理员帐号密码

string db = dbpara.Db; //待建立的数据库名

dbpara.Dispose();

//开始安装数据库

string strConn = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", server,user,pwd);

string strCreateDB = String.Format("CREATE DATABASE {0} ON (NAME={0}_data,FILENAME=\'{1}data\\{0}_data.mdf\') LOG ON (NAME={0}_log,FILENAME=\'{1}data\\{0}_log.ldf\')",db,this.Context.Parameters["targetdir"]);

try

{

ExecuteSql(strConn, "master", strCreateDB);

System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();

sqlProcess.StartInfo.FileName = "osql.exe";

sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}" + dbFile,user,pwd,db,this.Context.Parameters["targetdir"]);

sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

sqlProcess.Start();

sqlProcess.WaitForExit();

sqlProcess.Close();

//把数据库脚本文件删掉

System.IO.FileInfo fileSql = new System.IO.FileInfo(String.Format("{0}" + dbFile, this.Context.Parameters["targetdir"]));

if( fileSql.Exists )

{

fileSql.Delete();

}

}

catch( Exception ex )

{

switch( MessageBox.Show(ex.Message,"错误",MessageBoxButtons.AbortRetryIgnore,MessageBoxIcon.Exclamation) )

{

case DialogResult.Retry:

goto CREATEDB;

case DialogResult.Abort:

throw(new InstallException("安装失败。"));

case DialogResult.Ignore:

break;

default:

throw(new InstallException(ex.Message + "\n安装失败。"));

}

}

}

/// <summary>

/// 执行SQL

/// </summary>

/// <param name="strConn"></param>

/// <param name="dbname"></param>

/// <param name="sql"></param>

private void ExecuteSql(string strConn,string dbname,string sql)

{

SqlConnection conn = new SqlConnection(strConn);

SqlCommand cmd = new SqlCommand(sql,conn);

cmd.Connection.Open();

cmd.Connection.ChangeDatabase(dbname);

try

{

cmd.ExecuteNonQuery();

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

conn.Close();

}

}

分享到:
评论

相关推荐

    将.NET安装程序部署到SQL Server数据库

    ### 将 .NET 安装程序部署到 SQL Server 数据库:深入解析与实践指南 在IT行业,尤其是软件开发领域,将.NET安装程序部署到SQL Server数据库是一项常见且关键的操作。这一过程涉及到多个步骤,包括但不限于项目的...

    微信小程序+后台(.net)+sql server数据库

    在本项目中,"微信小程序+后台(.net)+sql server数据库"组合形成一个完整的开发环境,适合初学者了解和学习微信小程序的开发流程,以及后端服务与数据库的集成。 首先,微信小程序部分主要涉及以下几个知识点: ...

    .NET6WebAPI使用Sqlserver+JWT增删改查

    在本项目中,".NET6WebAPI使用Sqlserver+JWT增删改查"是一个基于最新.NET框架.NET6构建的Web应用程序示例,主要用于演示如何利用ASP.NET Core Web API与SQL Server数据库进行数据操作,以及结合JWT(JSON Web Tokens...

    asp.net中最好的对SQLSERVER数据库进行操作的类库

    asp.net中最好的对SQLSERVER数据库进行操作的类库,把对数据库的操作变成最简单的事情。

    ASP NET链接SQLServer数据库程序 含有数据库文件

    在给定的压缩包文件中,包含了一个使用ASP.NET连接到SQL Server数据库的程序实例,这将帮助我们深入理解如何在实际开发中处理数据库交互。 首先,让我们来看看ASP.NET如何与SQL Server进行连接。在ASP.NET中,我们...

    asp.net(C#) 连接SQLSERVER数据库视频教程

    1. **安装数据库驱动**:ASP.NET通常使用ADO.NET(ActiveX Data Objects .NET)框架来访问数据库。这需要安装SQL Server的客户端组件,例如SQL Server Native Client或SQL Server System Data Providers。 2. **...

    asp.net导入excel文件到sqlserver数据库

    在ASP.NET中,将Excel文件导入到SQL Server数据库是一项常见的数据操作任务,尤其适用于大量数据的批量处理。本文将详细讲解这一过程中的关键步骤、所用技术以及注意事项。 首先,你需要确保你有以下的开发环境: 1...

    ASP.NET+SQL Server 数据库开发与实例 光盘

    第4章~第11章通过8个经典的应用程序开发项目,系统全面地介绍了使用ASP.NET和SQL Server开发数据库应用程序的精髓;第12章总结性地介绍了ASP.NET数据库系统性能优化和安全知识。本书选材新颖,实例涵盖范围广,具有...

    微信小程序商城.net sql server 版后台(内含小程序代码后台程序和数据库)

    总的来说,这个微信小程序商城项目采用的技术栈是高效且成熟的,集成了.NET MVC的灵活开发和SQL Server 2008的强大数据库功能,再加上微信小程序的便捷性,为商家和消费者构建了一个高效、安全的在线购物环境。...

    .net core mvc在线考试系统asp.net考试系统源码考试管理系统 主要技术: 基于.net core mvc架构和sql server数据库,数据库访问采用EF core code fir

    基于.net core mvc架构和sql server数据库,数据库访问采用EF core code first,前端采用vue.js和bootstrap。 功能模块: 系统包括前台和后台两个部分,分三种角色登录。 管理员登录后台,拥有科目管理,题库管理,...

    Asp.net 学生自测系统 sql server数据库+源码

    《Asp.net 学生自测系统:sql server数据库与源码解析》 Asp.net 学生自测系统是一款基于.net2008和sql server2005技术开发的在线测试平台,旨在为学生提供自主学习和自我评估的环境。系统的主要功能包括学生登录、...

    .Net Core2.1 使用SqlSugar对SqlServer数据库操作

    在.NET Core 2.1开发环境中,SqlSugar是一个流行的ORM(对象关系映射)框架,它简化了与SQL Server数据库的交互。SqlSugar提供了一种高效、轻量级且易于使用的解决方案,使得开发者无需编写大量的SQL语句,就能实现...

    .net后台+sqlserver数据+文章浏览百度小程序源码

    .net后台+sqlserver数据库+文章浏览百度小程序源码 百度小程序源码 百度文章浏览小程序 修改配置即可使用 一款简单的百度小程序源码 百度小程序全套源码下载 .net后台+sqlserver数据库+文章浏览百度小程序...

    ASP.NET将EXCEL导入SQL SERVER数据库的代码

    在ASP.NET中,将Excel数据导入SQL Server数据库是一项常见的任务,尤其在处理大量表格数据时。这个过程通常涉及读取Excel文件,解析其内容,并将其批量插入到数据库表中。以下是一个详细的步骤介绍和相关知识点: 1...

    (VB.net 连接 SQL server数据库案例源码)数据收纳箱系统.zip

    (VB.net 连接 SQL server数据库案例源码)数据收纳箱系统.zip 源码开放,datagridview1控件列示等等

    vb.net+sqlserver数据库开发.rar

    VB.NET与SQL Server是两个在软件开发领域广泛应用的技术,它们结合在一起,能够构建高效、稳定的数据库驱动应用程序。本资料主要涵盖了这两个技术的结合使用,通过一系列的章节和实例,深入浅出地讲解了如何在VB.NET...

    asp.net core6 MVC+SqlServer例子

    ASP.NET Core 6 MVC + SQLServer 示例项目是一个现代Web应用程序开发框架的应用实例,适用于使用C#编程语言构建基于Web的应用程序。在这个项目中,我们将会深入探讨ASP.NET Core 6 MVC框架与SQL Server数据库的集成...

    中控考勤软件sqlserver数据库建立办法

    在软件的安装目录下找到 SQL Server 数据库脚本(文件名:sqlserver.sql),用记事本打开,然后把里面的脚本程序全部复制。注意,复制粘贴时不要通过快捷键操作,点鼠标右键复制粘贴。 步骤 4:执行数据库脚本 在...

    Asp.net Excel批量导入数据到SqlServer数据库

    Asp.net Excel批量导入数据到SqlServer数据库 本文将详细介绍如何使用 Asp.net 实现从 Excel 文件批量导入数据到 SqlServer 数据库中。该操作可以大大提高数据导入效率,缩短数据处理时间。 标题解释 Asp.net ...

    ASP.NET + SQL Server数据库开发实例

    ASP.NET和SQL Server是开发Web应用程序的常用技术组合,尤其在企业级应用中十分常见。ASP.NET是由微软提供的一个强大的Web应用程序框架,它基于.NET Framework,可以用来构建动态、交互式的网站和Web服务。而SQL ...

Global site tag (gtag.js) - Google Analytics