督察,有測試此標準的方式,一拉:如果連接已經打開,可以調用OracleConnection.Open()嗎?
if (! con.Open())
con.Open();
?
更新: 我想我沒有提及這些是我使用的Oracle的ODP組件。 OracleConnection組件沒有ConnectionState屬性。
督察,有測試此標準的方式,一拉:如果連接已經打開,可以調用OracleConnection.Open()嗎?
if (! con.Open())
con.Open();
?
更新: 我想我沒有提及這些是我使用的Oracle的ODP組件。 OracleConnection組件沒有ConnectionState屬性。
你需要將你的代碼分成不同的區別ct圖層來避免這種情況。只應在主方法(在API中 - 不是主應用程序的方法)中打開連接 - 然後傳遞給協調(私有)方法,該方法只消耗連接而不管理連接(打開,關閉,事務操作等) )。這使您的代碼保持清潔,並保證您的交易/連接安全。
使用Connection.State屬性來檢查連接是否已經打開
if(con.State == ConnectionState.Closed){
con.Open();
}
注意:如果連接丟失,這不起作用。例如,如果您在程序運行時終止該會話,con.State將仍然處於打開狀態。我想知道是否有人用低開銷的方式來判斷會話的連接是否真正打開。例如:您可以使用數據庫來檢查會話是否打開,您可以用最低成本進行交互? – shindigo 2013-06-27 15:31:45
if(Con.State != ConnectionState.Open)
con.Open();
,如果你想只開放關閉的連接,你可以使用
if(Con.State == ConnectionState.Close)
con.Open();
ConnectionState:http://msdn.microsoft.com/en-us/library/system.data.connectionstate.aspx
不應該那第二個'if'是'=='而不是'!='? – cadrell0 2012-03-27 16:34:54
對,我做了複製和粘貼/ – 2012-03-27 16:37:21
我想我沒有提及這些是我使用的Oracle的ODP組件。 OracleConnection組件沒有ConnectionState屬性。 – 2012-03-27 16:41:36
System.Data.OracleClient.dll或Oracle.DataAccess.dll? – cadrell0 2012-03-27 16:47:06