使用c#关闭打开的连接
本文关键字:连接 使用 | 更新日期: 2023-09-27 18:03:15
我在类文件中使用以下代码并访问此函数以打开连接,它返回true。我想关闭这个连接状态,我做不到。请帮我做这件事。
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
}
更多信息请访问MSDN文章
您最好返回一个打开的连接,因为您在OleDbCommand中需要它。如果你喜欢,你也可以在Common类中隐藏连接,但是如果你把它保存在using语句中,当你获得状态时没有打开连接,所以基本上如果返回true,你的连接实际上是关闭的(和dispose)。像这样重构:
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)
{
}
}