这是我在这个珍贵网站上的第一篇文章。我是vb.net的新学习者。我正在进行一个简单的购买项目,我遇到了一些错误。但首先让我困惑的是:
这是我在开发机器上的模块级别的连接字符串。
Public strCn As String = "Data Source = (local); Initial Catalog = PSys; Integrated Security = false; User ID = sa; Password = 123;"
数据源是否必须是系统名称的原始名称。我的意思是如果我使用(本地)或使用(。),它会工作与否?因为当我将我的项目复制到任何其他系统以进行进一步开发时,每次我需要更改数据源时,否则我会收到以下错误:“发生与网络相关或特定于实例的错误...... 。“
请指导我,我需要做什么。
答案 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()是返回客户配置的连接字符串的函数。
希望这一点指明你正确的方向......