是否必须连接字符串的数据源必须与系统名称匹配

时间:2013-07-06 07:11:53

标签: vb.net

这是我在这个珍贵网站上的第一篇文章。我是vb.net的新学习者。我正在进行一个简单的购买项目,我遇到了一些错误。但首先让我困惑的是:

这是我在开发机器上的模块级别的连接字符串。

    Public strCn As String = "Data Source = (local); Initial Catalog = PSys; Integrated Security = false; User ID = sa; Password = 123;"

数据源是否必须是系统名称的原始名称。我的意思是如果我使用(本地)或使用(。),它会工作与否?因为当我将我的项目复制到任何其他系统以进行进一步开发时,每次我需要更改数据源时,否则我会收到以下错误:“发生与网络相关或特定于实例的错误...... 。“

请指导我,我需要做什么。

1 个答案:

答案 0 :(得分:1)

当您开发使用数据库服务器(如MsSQL)的应用程序时,将服务器与应用程序一起安装到安装到的每台PC中是不明智的。例如,如果客户拥有10台计算机的本地网络,您打算做什么?你打算在所有10个中安装SQL服务器吗?如果是这样,如果他们需要共享数据呢?

因此,您最好的方法(基于其他应用程序的通用做法)将允许用户在他想要的地方安装SQL服务器,让他配置您的应用程序并将其指向服务器的位置。如果您遵循该路径,那么应用程序的配置可以在安装应用程序中或在应用程序本身中。

现在关于开发阶段,我遇到了类似的情况,我需要在两台不同的计算机上开发相同的应用程序。我所做的是使用命名实例“sqlexpress”在两者中安装SQL服务器然后在我使用的应用程序中

  

Data.SqlClient.SqlConnectionStringBuilder

用于构建连接字符串的类。我做了这样的事情:

Public Function getDevConnectionString() As String
    Dim csb As New Data.SqlClient.SqlConnectionStringBuilder(My.Settings.dbConnectionString) '<-My original cs in app settings

    csb.DataSource = My.Computer.Name & "\sqlexpress"

    Return csb.ConnectionString
End Function

每当我需要连接字符串时,我只需调用getDevConnectionString(),它根据计算机名称和sql server实例名称返回连接字符串。例如:

        Dim cs As String
#If DEBUG Then
    cs = getDevConnectionString()
#Else
    cs = getReleaseConnectionString()
#End If

其中getReleaseConnectionString()是返回客户配置的连接字符串的函数。

希望这一点指明你正确的方向......