新建项目,写这个类,最后在安装项目里,开始安装时执行这个项目的输出!
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
using System.Reflection;
using System.IO;
using System.Text;namespace DBCustomAction
{
/// <summary>
/// DBCustomAction 的摘要说明。
/// </summary>
[RunInstaller(true)]
public class DBCustomAction : System.Configuration.Install.Installer
{
private System.Data.SqlClient.SqlConnection sqlConnection1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public DBCustomAction()
{
// 该调用是设计器所必需的。
InitializeComponent(); // TODO: 在 InitializeComponent 调用后添加任何初始化
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private string GetSql()
{
StringBuilder myBuilder=new StringBuilder();
myBuilder.Append("if exists (select * from sysobjects where id = object_id(N'[dbo].[成员表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)");
myBuilder.Append("drop table [dbo].[成员表]; ");
myBuilder.Append(@" CREATE TABLE [成员表] ( [Name] [char] (30) NOT NULL , [Rsvp] [int] NULL , [Requests] [nvarchar] (4000) NULL )
ALTER TABLE [成员表] WITH NOCHECK ADD CONSTRAINT [PK_MK_Employees] PRIMARY KEY NONCLUSTERED ( [Name] );");
myBuilder.Append("INSERT [成员表] ( [Name] , [Rsvp] , [Requests] ) VALUES ( '31' , 11 , '12221' );");
return myBuilder.ToString();
}
private string ReturnMasterSql()
{
StringBuilder myBuilder=new StringBuilder();
myBuilder.Append("if exists(select * from sysdatabases where [name] like 'friend') drop database friend ");
myBuilder.Append("CREATE DATABASE friend"); return myBuilder.ToString();
}
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);
Command.ExecuteNonQuery();
Command.Connection.Close();
}
protected void AddDBTable(string strDBName)
{
ExecuteSql("master",ReturnMasterSql());
ExecuteSql(strDBName,GetSql());
} public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
} #region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=黄海;packet size=4096;user id=sa;data source=黄海;persist security inf" +
"o=True;initial catalog=master;password=mdcija"; }
#endregion
}
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
using System.Reflection;
using System.IO;
using System.Text;namespace DBCustomAction
{
/// <summary>
/// DBCustomAction 的摘要说明。
/// </summary>
[RunInstaller(true)]
public class DBCustomAction : System.Configuration.Install.Installer
{
private System.Data.SqlClient.SqlConnection sqlConnection1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public DBCustomAction()
{
// 该调用是设计器所必需的。
InitializeComponent(); // TODO: 在 InitializeComponent 调用后添加任何初始化
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private string GetSql()
{
StringBuilder myBuilder=new StringBuilder();
myBuilder.Append("if exists (select * from sysobjects where id = object_id(N'[dbo].[成员表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)");
myBuilder.Append("drop table [dbo].[成员表]; ");
myBuilder.Append(@" CREATE TABLE [成员表] ( [Name] [char] (30) NOT NULL , [Rsvp] [int] NULL , [Requests] [nvarchar] (4000) NULL )
ALTER TABLE [成员表] WITH NOCHECK ADD CONSTRAINT [PK_MK_Employees] PRIMARY KEY NONCLUSTERED ( [Name] );");
myBuilder.Append("INSERT [成员表] ( [Name] , [Rsvp] , [Requests] ) VALUES ( '31' , 11 , '12221' );");
return myBuilder.ToString();
}
private string ReturnMasterSql()
{
StringBuilder myBuilder=new StringBuilder();
myBuilder.Append("if exists(select * from sysdatabases where [name] like 'friend') drop database friend ");
myBuilder.Append("CREATE DATABASE friend"); return myBuilder.ToString();
}
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);
Command.ExecuteNonQuery();
Command.Connection.Close();
}
protected void AddDBTable(string strDBName)
{
ExecuteSql("master",ReturnMasterSql());
ExecuteSql(strDBName,GetSql());
} public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
} #region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=黄海;packet size=4096;user id=sa;data source=黄海;persist security inf" +
"o=True;initial catalog=master;password=mdcija"; }
#endregion
}
}
http://dev.csdn.net/develop/article/27/27814.shtm