一起谈.NET技术,ASP.NET 项目安装包制作(二)数据库安装、其他组件的安装

简介:   上一节是讲述如何制作Web安装包的过程,只要按照步骤做就可以了。这一节将讲述安装过程中如何部署数据库,以及执行其他组件的安装。  在这里使用直接执行sql脚本来创建数据库。(也可以使用附件数据库文件的形式)只要在Install方法中添加执行sql脚本的方法,就是使用SqlConnection连接数据库操作。

  上一节是讲述如何制作Web安装包的过程,只要按照步骤做就可以了。这一节将讲述安装过程中如何部署数据库,以及执行其他组件的安装。

  在这里使用直接执行sql脚本来创建数据库。(也可以使用附件数据库文件的形式)只要在Install方法中添加执行sql脚本的方法,就是使用SqlConnection连接数据库操作。

 
 
using (SqlConnectionconnection = newSqlConnection(connectionString))
{
connection.Open();

ExecuteSQL(connection, GetResource(
" createdatabase.sql " ));

}
/// <summary>
/// 执行sql语句
/// </summary>
/// <param name="connection"></param>
/// <param name="sql"></param>
void ExecuteSQL(SqlConnection connection, string sql)
{
SqlCommand cmd
= new SqlCommand(sql, connection);
cmd.ExecuteNonQuery();
}

/// <summary>
/// 获取数据库登录连接字符串
/// </summary>
/// <param name="databasename"> 数据库名称 </param>
/// <returns></returns>
private string GetConnectionString( string databasename)
{
return " server= " + Context.Parameters[ " server " ].ToString() + " ;database= " + ( string .IsNullOrEmpty(databasename) ? " master " : databasename) + " ;User ID= " + Context.Parameters[ " user " ].ToString() + " ;Password= " + Context.Parameters[ " pwd " ].ToString();
}

在这里使用嵌入式资源的形式打包sql脚本。我们添加createdatabase.sql和dropdatabase.sql添加到项目中,如下图:

 

image

  右击createdatabase.sql查看属性,如下图:

image

  设置生成操作为嵌入的资源。dropdatabase.sql也是如此操作。下面我们来使用代码如何读取资源的脚本,就是上面代码中的GetResource方法。

/// <summary>
///
获取资源文件中的脚本
/// </summary>
/// <param name="resourceName"></param>
/// <returns></returns>
string GetResource(string resourceName)
{
Assembly ass = Assembly.GetExecutingAssembly();
using (Stream stream = ass.GetManifestResourceStream(ass.GetName().Name + "." + resourceName))
{
using (StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default))
{
return reader.ReadToEnd();
}
}
}

  这样再来看install方法的全部代码,如下:

/// <summary>
///
安装
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);

string connectionString = GetConnectionString(null);

try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();

ExecuteSQL(connection, GetResource("createdatabase.sql"));

}
}
catch (Exception ex)
{
MessageBox.Show("数据库安装失败!\n数据库配置有误,请正确配置信息!\n" + ex.Message, "出错啦!");

this.Rollback(stateSaver);
}
}

  这样就完成了安装中数据库的创建。在卸载中删除数据库则需要重写Uninstall方法,来执行dropdatabase.sql中的脚本。

/// <summary>
///
卸载
/// </summary>
/// <param name="savedState"></param>
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);

/*
//这里要获取保存的链接字符串
string connectionString =
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();

ExecuteSQL(connection, GetResource("dropdatabase.sql"));

}
}
catch (Exception ex)
{
MessageBox.Show("数据库卸载失败!\n数据库配置有误,请正确配置信息!\n" + ex.Message, "出错啦!");
}
*/
}

  创建表、创建示例数据的操作就是类似操作,就是打包新的资源。Web项目的数据库连接都是在Web.config中的,所以安装过程还要修改Web.config的数据库连接,这里使用简单的替换。如下:

/*
* 设置webconfig连接字符串
*/
string webconfigpath = Path.Combine(this.Context.Parameters["targetdir"].ToString(), "web.config");
string webcofnigstring = File.ReadAllText(webconfigpath).Replace("#constring#", GetConnectionString("hxjdatabasename"));
File.WriteAllText(webconfigpath, webcofnigstring);

  Web 项目中WebConfig中配置:

<add name="ConnectionString" connectionString="#constring#" providerName="System.Data.SqlClient" />

  就是替换#constring#为安装过程中生成的新的链接字符串。还有在我们的OA项目中还是用微软的AJAX库,所以还要安装Ajax包。我们将AJAX包打包进安装项目。

image

  我们执行ajax 2.0.msi的代码,如下:

/*
* 安装ajax2.0框架
*/
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = Path.Combine(this.Context.Parameters["targetdir"].ToString(), "Ajax 2.0.msi");
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();

  这样在安装过称中就会安装这个ajax包了。

  下载示例

目录
相关文章
|
4天前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
19 4
|
25天前
|
Oracle 关系型数据库 MySQL
mysql数据库安装一
mysql数据库安装一
|
1月前
|
存储 NoSQL API
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
|
1月前
|
关系型数据库 MySQL 数据库
Windows安装MySQL数据库
本文介绍如何在Windows安装MySQL数据库。
39 0
|
1月前
|
SQL 数据库 C++
C++ Qt开发:Charts与数据库组件联动
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`Charts`组件与`QSql`数据库组件的常用方法及灵活运用。在之前的文章中详细介绍了关于`QCharts`绘图组件的使用方式,本章将继续延续这个知识点,通过使用`QSql`数据库模块动态的读取某一个时间节点上的数据,当用户点击查询数据时则动态的输出该事件节点的所有数据,并将数据绘制到图形组件内,实现动态查询图形的功能。
C++ Qt开发:Charts与数据库组件联动
|
3天前
|
安全 C# 开发者
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
|
4天前
|
关系型数据库 MySQL Linux
MySQL 数据库安装详解(linux系统和windows系统)
MySQL 数据库是一种广泛使用的开源关系数据库管理系统。在 Linux 和 Windows 系统上安装 MySQL 数据库的步骤略有不同。
28 0
|
18天前
|
NoSQL 关系型数据库 MySQL
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
不同系统下进行MySQL安装、MongoDB安装、Redis安装【2月更文挑战第5天】
215 5
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
|
25天前
|
关系型数据库 MySQL 数据库
mysql数据库安装二
mysql数据库安装二
|
27天前
|
存储 JSON NoSQL
【MongoDB】<文档型数据库>Windows&Liunx安装MongoDB(无错完整)
【1月更文挑战第26天】【MongoDB】<文档型数据库>Windows&Liunx安装MongoDB(无错完整)

相关产品

  • 云迁移中心