2015-09-24 88 views
1

我遇到了一些關於sql連接問題的問題。問題是我有這樣的代碼如何在另一個連接中使用Sql連接?

function1() 
{ 
    using (sqlconnection sc = new sqlconnection()) 
    { 
     foo(); 
    } 
} 

foo is a function like below: 
foo() 
{ 
    using (sqlconnection sc = new sqlconnection()) 
    { 
     dosomething; 
    } 
} 

似乎foo()中的sqlconnection不能工作。我想知道將foo(sc)傳遞給foo是否是一個好主意,或者在foo之外使用foo是一個好主意,或者是否有允許foo作品中的sqlconnection。

+0

沒有更多的細節,我們真的不能說。他們是否試圖連接到同一臺服務器?爲什麼你需要'function1'中的連接,如果它正在調用另一個方法? – sab669

+1

連接是一個會話。會話是分開的。實質上,如果您使用sqlcommand將其綁定到連接。在一個連接中,只能使用單個sqlreader,除非啓用mars。多個結果集。總之你應該努力的工作,如果它不存在不同的問題。你應該顯示更多的代碼和真正的錯誤或例外。 –

回答

3

沒有必要的是,有你的功能foo以接受連接參數,並使用相同的連接實例在這兩個地方,如下面

function1() 
{ 
    using (sqlconnection sc = new sqlconnection()) 
    { 
     foo(sc); 
    } 
} 

foo is a function like below: 

foo(sqlconnection scc) 
{ 
    sqlconnection sc = scc 
    dosomething; 
} 
+0

似乎是一個好主意,將sc內foo影響sc函數內嗎?因爲它是一個連接,所以我不知道它是否與其他「虛擬」對象一樣是function1中sc的「副本」。 – litaoshen

+1

@litaoshen,是的,因爲它是一個引用類型,而不是一個值類型,但唯一的想法是使用相同的連接對象,而不是多個。您可以使用相同的con對象,並且可以具有不同的命令對象或相同的事物。 – Rahul

+0

好的,我明白了。謝謝! – litaoshen