c# - 在多线程服务器应用程序中访问 SQL DB

标签 c# sql multithreading

在我的服务器应用程序中,我想使用 DB (SQL Server),但我不确定最佳方法。有些客户的请求进入线程池,因此他们的处理是异步的。每个请求通常都需要读取或写入数据库,所以我在考虑创建连接、执行查询并返回结果的静态方法。只怕打开和关闭连接是不是太慢了,是不是有些连接限制达不到?这是好方法吗?

最佳答案

恕我直言,最好依靠 ADO.NET 连接池机制,不要尝试手动处理数据库连接。像这样编写您的数据访问方法:

public void SomeMethod()
{
    using (var connection = new SqlConnection(connectionString))
    using (var command = connection.CreateCommand())
    {
        connection.Open();
        command.CommandText = "SELECT Field1 FROM Table1";
        using (var reader = command.ExecuteReader())
        {
            while(reader.Read())
            {
                // do something with the results
            }
        }
    }
}

然后你可以从任何你喜欢的地方调用这个方法,让它成为静态的,从任何线程调用它。请记住,在连接上调用 Dispose 实际上不会关闭它。它会将它返回到连接池,以便可以重复使用。

关于c# - 在多线程服务器应用程序中访问 SQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301614/

相关文章:

c# - 通过 .NET 中的某种接口(interface)使属性可用于数据绑定(bind)?

c# - 新线程无法识别已经创建的主线程单例

c - 上下文切换场景下clock_gettime()的准确性

c# - 执行 SQL 查询时显示进度条

java - 取消套接字和/或线程时遇到问题

c# - 没有它的最小起订量验证 - 什么样的比较?

sql - 如何在 Big Query 上执行标准 SQL(非旧版)中的 Instr() 函数

mysql - 有没有像 JSON Builder 这样的东西?

mysql - 此更新查询尝试使用 concat() fun 更新表有什么问题

javascript - 无法从 asp :Label after changing it with javascript 获取文本属性