您可以尝试在代码中构建自己的连接字符串。
Dim sqlConn As SqlClient.SqlConnection = New SqlClient.SqlConnection("server=" & my.Settings.Server & ";uid=" & txtUsername.Text & ";pwd=" & txtPassword.Text & ";database=" & txtDatabaseName.Text & ";Connect Timeout=150;MultipleActiveResultSets=True")
因此,例如,如果您有一个返回值的函数,并且您需要使用连接字符串中的当前值运行它,您可以执行类似于以下函数的操作。 (代码毫无意义,但更多的是向您展示我在说什么)
Private Function GetFirstName(ByVal p_CustomerID As String) As String
Dim cmd As New SqlClient.SqlCommand
Dim sqlConn As SqlClient.SqlConnection = New SqlClient.SqlConnection("server=" & my.Settings.Server & ";uid=" & txtUsername.Text & ";pwd=" & txtPassword.Text & ";database=" & txtDatabaseName.Text & ";Connect Timeout=150;MultipleActiveResultSets=True")
Dim sReturnResult As String = String.Empty
With cmd
.Connection = sqlConn
.CommandText = "SELECT [FIRST_NAME] " _
& " FROM CUSTOMER " _
& " WHERE ID = @ID"
.Parameters.Add("@ID", SqlDbType.VarChar, 30)
.Parameters("@ID").Value = p_CustomerID
End With
Dim SQLAdapter As New SqlClient.SqlDataAdapter(cmd)
Dim ds As New DataSet
Try
SQLAdapter.Fill(ds, "CUSTOMER")
If ds.Tables(0).Rows.Count > 0 Then
sReturnResult = ds.Tables("CUSTOMER").Rows(0).Item("FIRST_NAME").ToString()
End If
Catch ex As Exception
MsgBox("GetFirstName: " & ex.Message)
Finally
ds.Dispose()
sqlConn.Dispose()
cmd.Dispose()
SQLAdapter.Dispose()
End Try
Return sReturnResult
End Function
如果你有一个强类型的数据集,你想改变表适配器,你也可以用类似的方式来做
Dim sqlConn As SqlClient.SqlConnection = New SqlClient.SqlConnection("server=" & my.Settings.Server & ";uid=" & txtUsername.Text & ";pwd=" & txtPassword.Text & ";database=" & txtDatabaseName.Text & ";Connect Timeout=150;MultipleActiveResultSets=True")
CUSTOMERTableAdapter.Connection = sqlConn
最后一点是,我个人从未选中该框以将连接字符串存储在 DataSet 中。我发现如果我错误地这样做了,解决这个问题的最简单方法是创建另一个项目创建一个相同的数据集而不选择保存连接字符串信息,然后我将复制并粘贴 3 或 4 个文件到现有项目的顶部数据集(先备份),然后重新打开项目进行清理和重建。