C# 使用c关闭打开的连接#
我在一个类文件中使用下面的代码,并访问此函数以打开连接,它返回true。我想关闭此连接状态。我无法执行此操作。请帮我做这个C# 使用c关闭打开的连接#,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我在一个类文件中使用下面的代码,并访问此函数以打开连接,它返回true。我想关闭此连接状态。我无法执行此操作。请帮我做这个 common.cs ========= public static bool DBConnectionStatus() { try { string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|Dat
common.cs
=========
public static bool DBConnectionStatus()
{
try
{
string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|db_gym.mdb; Jet OLEDB:Database Password=gym_admin";
using (OleDbConnection conn = new OleDbConnection(conString))
{
conn.Open();
return (conn.State == ConnectionState.Open);
}
}
catch (OleDbException)
{
return false;
}
catch (Exception)
{
return false;
}
}
protected void btn_general_Click(object sender, EventArgs e)
{
try
{
bool state = common.DBConnectionStatus();
if(state == true)
{
// Some operation
}
// I want to close this connection
}
catch (Exception e1)
{
}
}
using
语句被翻译成三个部分:获取、使用和处置
using (OleDbConnection conn = new OleDbConnection(conString))
{
conn.Open();
return (conn.State == ConnectionState.Open);
//connection is automatically closed and disposed here
}
更多信息请访问。您最好返回一个打开的连接,因为您需要在OLEDB命令中使用该连接。如果愿意,也可以在公共类中隐藏连接,但如果将其保留在using语句中,则在获得状态时没有打开的连接,因此基本上如果返回true,则实际上连接已关闭(并已释放)。重构为如下内容:
public OleDbConnection GetOpenConnection()
{
string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|db_gym.mdb; Jet OLEDB:Database Password=gym_admin";
OleDbConnection conn = new OleDbConnection(conString))
conn.Open();
return conn;
}
protected void btn_general_Click(object sender, EventArgs e)
{
try
{
using(OleDbConnection openConnection = common.GetOpenConnection())
{
// I want to close this connection
openConnection.Close(); // close asap
} // dispose
}
catch (Exception e1)
{
}
}
在当前代码中,由于使用语句,连接被关闭并释放。将conn带到类的memberfield,或让DbConnectionStatus返回连接。@user2110618每次需要访问数据库时,我建议您使用
using
,而不是检查连接状态。嗯,因此它返回true以指示连接已打开/可打开?当函数返回时,连接关闭。'某些操作“如OP所示”不需要打开连接?@rene我认为OP只是在测试,这就是为什么我建议他使用只使用语句,而不是从函数中获取状态。我希望当维护人员介入时,这些知识能够保存下来:-)