之前可能已经提出并回答过这个问题,但我不知道如何搜索它。
情况:
我有一个带有许多绑定控件的Winforms
应用程序。我们有四个测试环境,目前,我已经连接到每个数据源并使用Data Source Configuration Manager
导入所有数据表和存储过程,然后将连接字符串信息存储在我的app.config文件中。当我调用连接字符串时,我正在使用My.Settings。[连接字符串名称] .ToString(我的第一个问题)。
对于所有数据绑定控件(主要是datagridview
),我在拖动新数据集+表适配器和绑定源之前删除旧数据集+表适配器和所有绑定源。我有一个Public Sub
清除并重新绑定我的所有控件,但代码会调用每个数据源的特定名称(例如,见下文)。
Public Sub SetRegionDEBindings(ByVal errorCode As String, ByVal Region As String)
Try
Dim selectLOMAbyRegion As New BindingSource
selectLOMAbyRegion = Me.SpSelectLOMABindingSource
Me.SpSelectLOMATableAdapter.Fill(Me.PrdGISDataSet.spSelectLOMA, errorCode, Region)
Me.dgDE.DataSource = selectLOMAbyRegion
Me.bnDE.BindingSource = selectLOMAbyRegion
Me.txtDEIssueDte.DataBindings.Add(New System.Windows.Forms.Binding("Text", selectLOMAbyRegion, "IssueDte", True))
Me.txtDECaseNum.DataBindings.Add(New System.Windows.Forms.Binding("Text", selectLOMAbyRegion, "CaseNum", True))
Me.txtDECommNum.DataBindings.Add(New System.Windows.Forms.Binding("Text", selectLOMAbyRegion, "CommNum", True))
With Me.dgDE
Me.DataGridViewTextBoxColumn1.Name = "DERegion"
Me.StateDataGridViewTextBoxColumn.Name = "DEState"
Me.LatitudeDataGridViewTextBoxColumn.Name = "Latitude"
Me.LongitudeDataGridViewTextBoxColumn.Name = "Longitude"
Me.IdLOMADataGridViewTextBoxColumn.Visible = False
Me.DiskNumDataGridViewTextBoxColumn.Visible = False
Me.DataGridViewTextBoxColumn1.Visible = False
Me.InsertDteDataGridViewTextBoxColumn.Visible = False
Me.LOMAStatusDataGridViewTextBoxColumn.Visible = False
Me.NotesDataGridViewTextBoxColumn.Visible = False
Me.StateDataGridViewTextBoxColumn.Visible = False
Me.SupercedeDataGridViewCheckBoxColumn.Visible = False
Me.UpdatedDteDataGridViewTextBoxColumn.Visible = False
End With
Me.dgDE.Visible = True
Me.dgDE.Rows(0).Selected = True
Me.dgDE.BringToFront()
If Me.dgDE.Rows(0).Cells("LOMAStatusDataGridViewTextBoxColumn").Value.ToString = "2" Then
MessageBox.Show("Warning: this case number has been previously inserted.")
End If
Catch ex As Exception
MessageBox.Show("Error setting data entry bindings: " & ex.Message.ToString)
End Try
End Sub
我的问题:
我应该从头开始创建app.config文件吗?
如果我需要更改服务器环境,我是否可以更改app.config文件(并调用Configuration.ConfigurationManager
而不是My.Settings...
)?
如果我更改app.config文件,如何在不打开解决方案,重新创建数据源以及清理/重建的情况下重新绑定数据源? (因为目前,我连接到新的data source
,将绑定源拖到我的控件上,并手动更新数据集代码)
我看过这里:
How To Change The Connection String saved in My.Settings in VB 2010
https://msdn.microsoft.com/en-us/library/ms171889(v=vs.90).aspx
但是,就像我说的那样,我不确定我是否在寻找正确的答案。
答案 0 :(得分:1)
要在运行时动态更改连接字符串,您应该在应用程序中应用一些小的更改。 (我假设您的连接字符串的名称是MyMainConnectionString
)
更改MyMainConnectionString
文件中的Setting
。
Data Source=(localdb)\v11.0;Initial Catalog=TestDB;Integrated Security=True
Type
更改为string
Scope
更改为User
Value
从现在开始,如果要在向导中向TableAdapter
添加DataSet
,请选择不保存连接字符串。
现在您有一个普通的字符串设置MyMainConnectionString
,可以在运行时更改并保存。
您可以这样设置值:
My.Settings.MyMainConnectionString= "Some New Value"
也可以使用其他预定义属性设置值,例如DebugConnectionString
,TestConnectionString
,ProductionConnectionString
,并根据某些条件或其他设置设置此值:
My.Settings.MyMainConnectionString = My.Settings.TestConnectionString
要保存设置,您可以使用:
My.Settings.Save()
您只需在Setting.settings
文件中更改连接字符串的值即可。
您可以在yourApplication.exe.config
中更改连接字符串的值。