您的位置:首页 > 数据库

C#安装项目文件,自动读取参数的安装类(自动安装SQL SERVER数据库)

2006-05-17 17:28 507 查看
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
using System.IO;
using System.Data.SqlClient;
using System.Reflection;

namespace DBCustomAction
{
/// <summary>
/// DBCustomAction 的摘要说明。
/// </summary>
[RunInstaller(true)]
public class DBCustomAction : System.Configuration.Install.Installer
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
private string strPass = "";

public DBCustomAction()
{
// 该调用是设计器所必需的。
InitializeComponent();

// TODO: 在 InitComponent 调用后添加任何初始化
}

#region Component Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{

}
#endregion

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

//入口
strPass = this.Context.Parameters["strPass"];
AddDBTable("RequestSys");//RequestSys为数据库名称

}
private string GetSql(string strName)
{
try
{
//' Get the current assembly.
Assembly Asm = Assembly.GetExecutingAssembly();
// Resources are named using a fully qualified name

Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + strName);

//Read the contents of the embedded file.
StreamReader reader= new StreamReader(strm);//,System.Text.Encoding.Unicode);

return reader.ReadToEnd();
}
catch
{
return null;
}

}
private void ExecuteSql(string DatabaseName , string Sql)
{

SqlConnection sqlConnection1 = new SqlConnection("user id=sa;password="+strPass+";database=master;server=(local)") ;
SqlCommand Command = new SqlCommand(Sql, sqlConnection1);
Command.Connection.Open();
Command.Connection.ChangeDatabase(DatabaseName);

try
{
Command.ExecuteNonQuery();
}

finally
{
// Finally, blocks are a great way to ensure that the connection
Command.Connection.Close();
}

}
protected void AddDBTable(string strDBName )
{
try
{
//Create the database.
ExecuteSql("master", "CREATE DATABASE " + strDBName);
// Create the tables.
ExecuteSql(strDBName, GetSql("sql.txt"));
}
catch
{

}
}

}
}

附:

自定义操作设置

CustomActionData

属性两个值以上设置方法如下:

/strPass=[STRPASS] /edit2=[EDITC2]

参考

http://msdn2.microsoft.com/zh-tw/library/2w2fhwzz.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: