猿问

C#与SQL2005数据部署安装问题

在网站找到了实现方法,但是打包后的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 - 连接字符串无效)

请问我程序中写的是哪个字符串出问题了??

我是刚刚注册的新手,分不多··给个意思···多多原谅!

小唯快跑啊
浏览 300回答 3
3回答

慕后森

将这个字串打出来复制到连接管理器中试一下

扬帆大鱼

如果你的数据库不是SQL EXPRESS,就应该不是远程连接的问题 检查一下你的连接字符串的几个参数是否正确传递,是否有对应安装界面的文本框输入
随时随地看视频慕课网APP
我要回答