由于主要是参考MSDN的,所以这里一些细节不再重复
具体大家可以参考MSDN上一篇叫:
Walkthrough: Using a Custom Action to Create a Database During Installation
的文章。拷贝下来的,地址不知道了,不好意思:)
下面开始说制作的步骤:
首先:新建一个类库,以C#为例。命名随意
然后添加新项,选择安装程序类,命名也随意
然后添加一个名为:sql.txt的文件(注意大小写)点击sql.txt右键,在生成操作中选择嵌入的资源。
sql.txt的内容为从sql server数据库导出的sql语句
这里有个地方需要注意:
一般导出的sql格式是这样的:
CREATE TABLE [dbo].[Company_CanidateAlertList] (
[JobID] [int] NULL ,
[JobSeekerID] [int] NULL ,
[SYS_CreateTime] [datetime] NULL
) ON [PRIMARY]
GO
这时你需要改成:
CREATE TABLE [dbo].[Company_CanidateAlertList] (
[JobID] [int] NULL ,
[JobSeekerID] [int] NULL ,
[SYS_CreateTime] [datetime] NULL
) ON [PRIMARY];
否则不会被C# 执行,也不会报错:)(困扰了我很久,呵呵)
回到安装文件类的视图页面,点击数据库资源管理器,选择master数据库生成一个sqlconnection。这个细节我就不重复了。(注意一点,验证使用window集成)
切换到安装类到代码视图
引入名字空间:
using System.Reflection;
using System.IO;
然后添加以下几个函数,等下一一介绍:
private string GetSql(string Name)
{
try
{
Assembly Asm = Assembly.GetExecutingAssembly();
Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "."+Name);
StreamReader reader = new StreamReader(strm,System.Text.Encoding.Default);
//System.Text.Encoding.ASCII;
return reader.ReadToEnd();
}
catch (Exception ex)
{
Console.Write("In GetSql:"+ex.Message);
throw ex;
}
}
private void ExecuteSql(string DataBaseName,string Sql)
{
System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);
Command.Connection.Open();
Command.Connection.ChangeDatabase(DataBaseName);
try
{
Command.ExecuteNonQuery();
}
&n