請問如何在VB.NET 大型程序中保持连接对象的统一?
本人已经尝试使用如下办法,但仍未达到理想效果,请各位高手指点一下,本人感激不尽!!!
A . 在公共模塊(Moduel)中定義全局聯接對象,聯接字符串:
Public Module initilizevariable
Public G_con As New OleDbConnection()
Public G_strCon As String
. . . . . . .
End Module
B. 在登錄界面(Frmlogon)中,根據選擇的版本(分公司),設置不同的聯接字符串:
Select Case Cboversion.Text
Case "PLANT1" G_strCon = "Provider=MSDAORA.1;Password=test1;User ID=test1;Data Source=test1" Case "PLANT2" G_strCon = "Provider=MSDAORA.1;Password=test2;User ID=test2;Data Source=test2" Case "PLANT3" ....... End Select G_con.ConnectionString = G_strCon G_con.Open() C .在各數據維護窗體 :(Frmdata1,Frmdata2,Frmdata3,......): 1). 從工具欄拖一個 適配器 (OleDbDataAdapter ) OleDbDataAdapter1 到窗體,在產生適配器的向導中,將"Generate Insert,Update and Delete Statements" 選項去掉 (即無需 OleDbDataAdapter 自動產生上述命令對象),此時 OleDbDataAdapter 僅自動產生 OleDbConnection,OleDbSelectCommand 對象 ,將 OleDbDataAdapter 自動產生的 OleDbConnection 對象刪除, 在 Frmdata1_Load 代碼中加入: OleDbDataAdapter1.SelectCommand.Connection = G_con Dim CMDtemp As New OleDb.OleDbCommandBuilder(OleDbDataAdapter1) 2). 從工具欄拖一個 適配器 (OleDbDataAdapter ) OleDbDataAdapter1 到窗體,在產生適配器的向導中,將"Generate Insert,Update and Delete Statements" 選項選中 ( 需要 OleDbDataAdapter 自動產生上述命令對象),將 OleDbDataAdapter 自動產生的 OleDbConnection 對象刪除, 在 Frmdata1_Load 代碼中 加入: OleDbDataAdapter1.SelectCommand.Connection = G_con OleDbDataAdapter1.InsertCommand.Connection = G_con OleDbDataAdapter1.UpdateCommand.Connection = G_con OleDbDataAdapter1.DeleteCommand.Connection = G_con 3) 將 2) 中 OleDbDataAdapter 自動產生的 OleDbConnection 對象保留,在 Frmdata1_Load 代碼中加入: OleDbConnection1.ConnectionString = G_strCon
4) 設置一個祖先窗體Frmbasic ,在其上添加一個聯接對象 CONMAIN , Frmbasic 繼承屬性設置為 Friend, 所有數據窗體( Frmdata1,Frmdata2 ……..) 由此繼承 在數據窗體上添加 OleDbDataAdapter 時 , 應選擇與 CONMAIN一致的聯接字符串, 從而確保此OleDbDataAdapter 的聯接對象為CONMAIN,
在Frmbasic_Load 中加入:
CONMAIN.ConnectionString = G_strCon
上述四種方法均達到了在整個程序中保持聯接統一的效果 , 但在 Server Explorer 中, 為每個數據庫建立了一個連接,當窗體需要產生多個適配器時,在產生適配器的向導中選擇不同的連接將產生不同的 OleDbConnection 對象 , 此時若有一個 OleDbConnection 對象的 ConnectionString 忘記在 Frmdata1_Load 中 設置 , 後果難以預料, 即使 在 Frmdata1_Load 中 設置 ,由於有多個 OleDbConnection 對象 也較煩瑣. 不知道有何簡便方法可在整個程序中保持聯接的統一, 請指點一下, 多謝!!! 网络邮箱 : YCLHN@126.COM 公司邮箱 : CL_YANG@SAE.COM.HK