gpt4 book ai didi

c# - 如果在 DB2 中超过分配的时间,则终止 SQL 查询执行

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:14 26 4
gpt4 key购买 nike

我正在 .NET 中创建一个程序,它使用 IBM DB2 .NET 提供程序 (IBM.Data.DB2) 连接到 DB2 数据库 (v9.7) 并运行选择查询。

如果提交的选择查询返回数据的时间超过 5 秒,程序应终止 SQL 执行。

根据 IBM's documentation 实现我可以在连接中使用 QueryTimeout 参数。

string connStr = "Server=server:12345;Database=db;UID=user;PWD=pass; QueryTimeout = 5;";

DB2Connection conn = null;
DB2Command cmd = null;

conn = new DB2Connection(connStr);
conn.Open();
Console.WriteLine("IBM DB2: " + conn.IsOpen);
if (conn.IsOpen)
{
Console.WriteLine(conn.ConnectionTimeout);
cmd = conn.CreateCommand();
cmd.CommandText = "select * from user.orders";
DB2DataReader reader = cmd.ExecuteReader();
int counter = 0;
while (reader.Read())
{
counter += 1;
Console.WriteLine(reader.GetDB2Int64(0));
}
reader.Close();
}
conn.Close();

当我在 winSQL 中运行查询时,查询大约需要 20 秒才能执行。但是当我在这个程序中执行它时,我花了同样的 20 秒。根据文档,查询应该在 5 秒内终止。

为什么执行没有停止?

PS:我也试过将 cmd.CommandTimeout 设置为 5,它仍然不会停止执行。

最佳答案

阅读DB2Command.CommandTimeout IBM 网站上的属性教程。我希望这会解决你的问题。 C# 示例代码如下:

[C#]

public void CreateMyDB2Command()
{
string mySelectQuery = "SELECT * FROM EMPLOYEE ORDER BY EMPNO";
DB2Command myCommand = new DB2Command(mySelectQuery);
myCommand.CommandTimeout = 20;
}

关于c# - 如果在 DB2 中超过分配的时间,则终止 SQL 查询执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42797332/

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