[英]How to close a .NET ODBC connection?
我正在使用 ODBC 连接到 Sybase 数据库。 问题是即使在范围完成后连接也不会关闭,当我运行sp_who
时,我看到数据库中打开了大约 200 个连接。 我尝试启用连接池,但这也无济于事。
using(var connection = GetOdbcConnection())
{
connection.Open();
using (var cmd = new OdbcCommand(query, connection))
{
var reader = cmd.ExecuteReader();
if (reader.Read())
{
long textLen = reader.GetChars(0, 0, null, 0, 0);
}
reader.Close();
}
}
我使用的连接字符串是value="Driver={Adaptive Server Enterprise};app=xxx;server=xxxx;port=xxxx; db=xxx;uid=xxx;pwd=xxxx;textsize=2097152"
。
更新:
public static OdbcConnection GetOdbcConnection() {
string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
return new OdbcConnection(connectionString);
}
你试过connection.Close()
吗?
using(var connection = GetOdbcConnection())
{
connection.Open();
using (var cmd = new OdbcCommand(query, connection))
{
var reader = cmd.ExecuteReader();
if (reader.Read())
{
long textLen = reader.GetChars(0, 0, null, 0, 0);
}
reader.Close();
}
// Close the connection
connection.Close();
}
尝试尝试.. 抓住,最后......
在最后明确检查 connection.state 是否未关闭.. 关闭它..
当using
块结束时,与数据库的连接将自动关闭。 你根本不需要做任何事情。
我不确定,但我认为 GetOdbcConnection 函数是罪魁祸首。 试试这个函数的修改版本。
private static OdbcConnection _Connection;
public static OdbcConnection GetOdbcConnection() {
string connectionString =
ConfigurationManager.AppSettings["ConnectionString"].ToString();
_Connection = new OdbcConnection(connectionString);
return _Connection;
}
ado.net 保持连接打开以供重用,这称为连接池。 我认为对于 odbc 连接,池是在 windows 中的 odbc 设置下配置的。 对于 SqlConenction 等其他类型的连接,您可以在连接字符串中配置池功能。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.