在网站找到了实现方法,但是打包后的EXE文件无法安装数据库,小弟不才,敬请大侠指教!
我的实现代码:
private void ExecuteSql(string conn, string DatabaseName, string Sql)
{
SqlConnection mySqlConnection = new SqlConnection(conn);
SqlCommand Command = new SqlCommand(Sql, mySqlConnection);
mySqlConnection.Open();
mySqlConnection.ChangeDatabase(DatabaseName);
try
{
Command.ExecuteNonQuery();
}
finally
{
//close Connection
mySqlConnection.Close();
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
// ------------------------建立数据库-------------------------------------------------
try
{
string connstr = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", Context.Parameters["server"], Context.Parameters["user"], Context.Parameters["pwd"]);
//'根据输入的数据库名称建立数据库
ExecuteSql(connstr, "master", "CREATE DATABASE " + Context.Parameters["dbname"]);
//'调用osql执行脚本
Process sqlprocess = new System.Diagnostics.Process();
sqlprocess.StartInfo.FileName = "osql.exe ";
sqlprocess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}ACM618DeviceInfo.sql", Context.Parameters["user"], Context.Parameters["pwd"], Context.Parameters["dbname"], Context.Parameters["targetdir"]);
sqlprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
sqlprocess.Start();
sqlprocess.WaitForExit(); // '等待执行
sqlprocess.Close();
//'删除脚本文件
FileInfo sqlfileinfo = new FileInfo(String.Format("{0}ACM618DeviceInfo.sql", Context.Parameters["targetdir"]));
if (sqlfileinfo.Exists)
{
sqlfileinfo.Delete();
}
}
catch (Exception ex)
{
throw ex;
}
}
安装程序时提示的错误是:
在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 25 - 连接字符串无效)
请问我程序中写的是哪个字符串出问题了??
我是刚刚注册的新手,分不多··给个意思···多多原谅!
慕后森
扬帆大鱼