gpt4 book ai didi

c# - 使用 SqlDataAdapter 填充 DataTable 时 CommandTimeout 不起作用

转载 作者:行者123 更新时间:2023-12-05 06:44:26 24 4
gpt4 key购买 nike

我将 CommandTimeout 设置为 1 秒,并且没有按预期抛出 TimeoutException。我正在运行的查询大约需要 7-8 秒。但是,当我使用 ExecuteReader 执行查询而不是尝试填充 DataTable 时,超时确实有效。我尝试在创建命令后以及创建 DataAdapter 后设置 CommandTimeout。

using(SqlConnection con = new SqlConnection("data source=*****;user id==*****;password==*****;initial catalog==*****;"))
{
string query = "select * from *****";

SqlCommand command = new SqlCommand(query, con);
//command.CommandTimeout = 1;

CostingDataSet cds = new CostingDataSet();

SqlDataAdapter da = new SqlDataAdapter(command);
da.SelectCommand.CommandTimeout = 1;

Stopwatch stopwatch = Stopwatch.StartNew();
da.Fill(cds.CostingData);
stopwatch.Stop();

Console.WriteLine(stopwatch.ElapsedMilliseconds);
}

最佳答案

原因是 SQLDataAdapter 中出现的魔法,坦率地说,这就是为什么它们不是一个好主意。

我猜他们正在使用异步来执行填充,这将始终忽略命令超时。

我的建议:远离适配器,永远不要回头看。它们没有那么有值(value),而且会使一切变得更困惑。

如果无法做到这一点,请在连接字符串中设置连接超时,无论数据库的访问方式如何,它都应该适用。

关于c# - 使用 SqlDataAdapter 填充 DataTable 时 CommandTimeout 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28764267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com