相关疑难解决方法(0)

C#SQLConnection池

任何人都可以向我简要介绍如何在ADO.Net中进行连接池,我需要连接到3个独立的数据库.其中2个在同一服务器中,另一个在另一个服务器中.

更好的代码片段..

c# sql-server ado.net sqlconnection

15
推荐指数
3
解决办法
9618
查看次数

for循环是否在每次迭代时打开和关闭数据库连接?

我正在帮助调试一些代码并具有以下for循环.它是否在每次迭代时打开和关闭与数据库的连接?

for (int i = 0; i < count; i++)
{
    int num = dataTable.Rows[i]["Location_Id"]
    database.ProcessAlerts("spProcessAlerts", num)
}
Run Code Online (Sandbox Code Playgroud)

从数据库类,这里是相关部分:

public bool GetConnection()
{
    try
    {
        GeneralLib.GetIniSettings();
        string connectionStrings = GeneralLib.Settings.ConnectionStrings;
        Database.conn = new SqlConnection(connectionStrings);
        Database.conn.Open();
    }
...
public void ProcessAlerts(string ProcedureName, int nByLocationId)
{
    try
{
    if (this.GetConnection())
    {
        SqlCommand sqlCommand = new SqlCommand(ProcedureName, Database.conn);
        sqlCommand.CommandType = CommandType.StoredProcedure;
        SqlParameter sqlParameter = sqlCommand.Parameters.Add("@ByLocation_Id", SqlDbType.Int);
        sqlParameter.Value = nByLocationId;
        sqlCommand.ExecuteNonQuery();
        this.CloseConnection();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的直觉让我相信for循环在每次迭代时打开/关闭,但由于我根本不使用.net,我真的不知道.我已经搜索了很多关于这一点,并没有找到一个令人满意的答案(如执行时间较慢,每次迭代相同的SPROC,保持Sql连接打开以迭代许多请求?或关闭每一步?,打开和关闭数据库连接对于每个查询C#SQLConnection池).有些帖子说当你需要它时打开连接并立即关闭它,而其他人说如果你使用连接池,连接并没有真正关闭,它只是不可用.我不完全理解这一点.

基本上这段代码应该处理信息,以便可以发送警报,并且我们最近在这个过程中经历了很长的时间延迟.从日志中我可以看到for循环开始/停止的时间,并且有时需要几个小时才能遍历几千条记录.也可能是spProcessAlerts花了很多时间来运行某些行,所以我也在研究那里发生的事情.

.net c# sql-server performance

2
推荐指数
1
解决办法
1924
查看次数

标签 统计

c# ×2

sql-server ×2

.net ×1

ado.net ×1

performance ×1

sqlconnection ×1