在哪里初始化数据库连接比较好
Where is it better to initialise the Database connection
我正在做一个项目,在编码时我很困惑,关于在 class 的构造函数或我正在使用它的函数中初始化连接的位置。
我在构造函数中的代码如下:
public class clsTest
{
private readonly MySql.Data.MySqlClient.MySqlConnection _dbInstance;
public clsTest()
{
_dbInstance = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString);
}
public bool insert(object model)
{
using (_dbInstance)
{
//do what ever you want to achieve
return true;
}
}
}
第二种方法(即仅在函数中)是:
public List<tEntity> Getts()
{
using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
{
// do whatever you want to do
}
}
哪种方法更好?
当您使用 using 时,您正在处理结束时的对象}。如果您尝试再次使用已释放的 Connection 对象,您将遇到问题。
使用第二种方法来避免这种情况。
更新
向您展示我的意思:
第一次通话:
public bool insert(object model)
{
using (_dbInstance) // This works
{
//do what ever you want to achieve
return true;
}//_dbInstance is disposed
}
第二次通话:
public bool insert(object model)
{
using (_dbInstance) //This does not work as _dbInstance was disposed in the first call
{
//do what ever you want to achieve
return true;
}
}
除非需要,否则不要创建对象。最好在 Using
块中启动您的 ConnectionString。
Using
调用 ConnectionString 的 Dispose()
方法并告诉 GC 收集它。
更多信息:
我正在做一个项目,在编码时我很困惑,关于在 class 的构造函数或我正在使用它的函数中初始化连接的位置。
我在构造函数中的代码如下:
public class clsTest
{
private readonly MySql.Data.MySqlClient.MySqlConnection _dbInstance;
public clsTest()
{
_dbInstance = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString);
}
public bool insert(object model)
{
using (_dbInstance)
{
//do what ever you want to achieve
return true;
}
}
}
第二种方法(即仅在函数中)是:
public List<tEntity> Getts()
{
using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
{
// do whatever you want to do
}
}
哪种方法更好?
当您使用 using 时,您正在处理结束时的对象}。如果您尝试再次使用已释放的 Connection 对象,您将遇到问题。
使用第二种方法来避免这种情况。
更新
向您展示我的意思:
第一次通话:
public bool insert(object model)
{
using (_dbInstance) // This works
{
//do what ever you want to achieve
return true;
}//_dbInstance is disposed
}
第二次通话:
public bool insert(object model)
{
using (_dbInstance) //This does not work as _dbInstance was disposed in the first call
{
//do what ever you want to achieve
return true;
}
}
除非需要,否则不要创建对象。最好在 Using
块中启动您的 ConnectionString。
Using
调用 ConnectionString 的 Dispose()
方法并告诉 GC 收集它。
更多信息: