在网站找到了实现方法,但是打包后的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 - 连接字符串无效)
请问我程序中写的是哪个字符串出问题了??
我是刚刚注册的新手,分不多··给个意思···多多原谅!
问题出现 在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败 这里应该出问题了吧.SQL Server 2005默认不允许远程连接,这个需要手动的开启SQL Server2005的远程连接项啦!你可以参考这篇文章 http://www.cnblogs.com/weaa/archive/2007/02/10/647036.html 。
另外需要明确一点,在默认安装VS2005/2008时会安装一个SQL Express版本的2005数据库,在设置data source这个值的时候需要设置以SQLExpress实例进行连接(如果你安装时使用本机的SQL Server Express2005版本做测试的话),否则不能连接成功的。
将这个字串打出来复制到连接管理器中试一下
如果你的数据库不是SQL EXPRESS,就应该不是远程连接的问题
检查一下你的连接字符串的几个参数是否正确传递,是否有对应安装界面的文本框输入