这两种情况有什么区别。首先,如果我打开连接并将其作为参数传递给我的方法,那么直接在方法中打开连接?
cnn.open()
func(cnn,param1,param2);
VS
func(cnn, param1,param2)
{
cnn.open();
//open connection here
}
答案 0 :(得分:2)
除了在一种情况下,你发布的代码没有区别,你的调用函数需要负责打开/关闭连接,另一方面,你希望函数能够做到这一点。
答案 1 :(得分:0)
不同之处在于,在第二种方法中,您打开连接。
在第一种方法中,您希望该方法仅使用不关心清理资源的连接。
答案 2 :(得分:0)
没有功能差异,但打开和关闭连接的线应该尽可能地靠近,因此它们应该采用相同的方法。
答案 3 :(得分:0)
不同之处在于您希望如何使用连接和性能。如果该函数是一次性调用并且您没有调用其他函数,或者没有对连接执行任何其他操作,那么该函数的第二个版本甚至可以简化为:
func(param1, param2) {
Connection c = ....
c.Open(...);
...
c.Close();
}
但是,如果在连接上调用许多函数,甚至在连接上多次调用该函数,或者如果连接的创建和配置位于代码中的更高层,那么您应该使用第一个版本的函数,如果未打开连接则添加抛出异常。
答案 4 :(得分:0)
嗯,我认为你不应该问不同,而应该解释你所处的情况,并要求就必须使用的情况提出建议。
无论如何,正如大家告诉你的那样,在案例2中,连接对象及其生命周期被封装在被调用者函数中。如果数据库操作不需要此功能,建议使用此方法。
否则,如果您要执行任何其他数据库活动,请执行此函数作用域,例如调用函数或从调用函数调用的任何其他函数(除了func),那么您应该使用案例1。