有关在运行时更新已部署的应用程序SQL连接字符串的建议

时间:2015-01-07 14:24:03

标签: .net vb.net winforms visual-studio-2013

来自基于Web的背景,我没有太多开发和部署.NET桌面应用程序的经验,并希望了解将客户端计算机上已部署的win表单应用程序连接到SQL Server的本地实例的过程。 。

我已经创建了一个测试表单应用程序,我可以在运行时通过win表单配置我的连接字符串,其中包含DBname,Server,UserID和Password的文本框..它工作正常(因为我可以提取数据)我在调试中运行时,从我设置的任何服务器/ db)。为了在客户机(我的另一台PC)上测试它,我使用InstallShield和VS13并创建了一个安装包。我创建了一个在我的开发机器上本地运行的数据库的备份,并在安装了SQL Server的客户机上重新创建了它。我安装了应用程序,并运行了配置表单。遗憾的是,当我在客户端计算机上运行时,一旦代码执行“更改连接字符串”功能 - “对象引用未设置为实例”,我就会收到错误。我很好奇可能出现的问题,并希望了解如何进行故障排除,或建议他们是否是更好,更首选的方法来在客户端计算机上安装应用程序并让它与客户端进行通信本地SQL服务器。

非常感谢提前!

------ ------代码 **请注意,当我将其作为打包的exe运行时,所有消息框都是为了隔离代码断开的位置。

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

    Try

        Dim Con As New StringBuilder("Data Source=")
        Con.Append(txtServer.Text)
        Con.Append(";Initial Catalog=")
        Con.Append(txtDBName.Text)
        Con.Append(";User ID=")
        Con.Append(txtUserID.Text)
        Con.Append(";Password=")
        Con.Append(txtPass.Text)
        Con.Append(";Integrated Security=SSPI;")
        Dim strCon As String = Con.ToString()
        MessageBox.Show("About to call the update xml method. Server: " & txtServer.Text & " DB: " & txtDBName.Text & " User: " & txtUserID.Text & "Password: " & txtPass.Text)
        updateConfigFile(strCon)
        MessageBox.Show("Made it out of updateConfigFile Method")

        Dim Db As New SqlConnection()


        ConfigurationManager.RefreshSection("connectionStrings")
        Db.ConnectionString = ConfigurationManager.ConnectionStrings("connex").ToString()

        Dim da As New SqlDataAdapter("select * from TestTable", Db)
        Dim dt As New DataTable()
        da.Fill(dt)
        ComboBox1.DataSource = dt
        ComboBox1.DisplayMember = "TestColumn"
    Catch ex As Exception
        MessageBox.Show(ConfigurationManager.ConnectionStrings("con").ToString() + ".This is invalid connection", "Incorrect server/Database")
    End Try




End Sub


Public Sub updateConfigFile(con As String)
    Try
        MessageBox.Show("We are in updateConfigFileMethod")
        Dim XmlDoc As New XmlDocument()
        MessageBox.Show("About to load config file")
        XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
        For Each xElement As XmlElement In XmlDoc.DocumentElement
            If xElement.Name = "connectionStrings" Then
                'setting the coonection string
                xElement.FirstChild.Attributes(2).Value = con
            End If
        Next
        MessageBox.Show("XML Created, about to save config file. Connnection string: " & con)
        XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
    Catch ex As Exception
        MessageBox.Show(ex.Message.ToString())
    End Try

End Sub

0 个答案:

没有答案