在网站找到了实现方法,但是打包后的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 - 连接字符串无效)
请问我程序中写的是哪个字符串出问题了??
我是刚刚注册的新手,分不多··给个意思···多多原谅!
- 3 回答
- 0 关注
- 299 浏览
添加回答
举报
0/150
提交
取消