2015-09-24 55 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