以下是使用ADO.Net执行查询的简短代码段
using(SqlConnection objSqlConnection = new SqlConnection(sConnectionString))
{
objSqlConnection.Open();
using (SqlCommand objSqlCommand = new SqlCommand(sSQLQuery, objSqlConnection))
{
objSqlCommand.ExecuteNonQuery();
}
}
其中' sConnectionString'是一个标准的SQL Server连接字符串和 ' sSQLQuery'是一个基本的INSERT查询
在循环中执行上面的代码(一秒钟一次),我发现了一些非常奇怪的东西。
每次执行都会增加应用程序的句柄数。
我错过了什么吗?
任何想法都将受到高度赞赏。
这里还有其他类似的问题。其中一个答案是将目标框架更改为3.5。但就我而言,这是不可能的 - 我的目标是4.0。
答案 0 :(得分:0)
在@Freggar和@ Aphelion的帮助下,我对连接字符串进行了一些更改 以下是我用来形成连接字符串的示例代码
SqlConnectionStringBuilder objSqlConnectionStringBuilder = new SqlConnectionStringBuilder();
objSqlConnectionStringBuilder.DataSource = sMyDatabaseServer;
objSqlConnectionStringBuilder.IntegratedSecurity = true;
objSqlConnectionStringBuilder.InitialCatalog = sMyDatabaseName;
objSqlConnectionStringBuilder.ConnectTimeout = 30;
objSqlConnectionStringBuilder.Pooling = false;
using(SqlConnection objSqlConnection = new SqlConnection(objSqlConnectionStringBuilder.ConnectionString))
{
objSqlConnection.Open();
using (SqlCommand objSqlCommand = new SqlCommand(sSQLQuery, objSqlConnection))
{
objSqlCommand.ExecuteNonQuery();
}
}
通过此更改可显着减少手柄泄漏但不完全
希望这有助于某人经历同样的情况