c# - 到 DB2 的 ODBC 连接挂起

标签 c# odbc db2

我有一个函数,用于通过 ODBC 向 DB2 发送写入查询,如果我失去与 DB2 的连接,它有时会卡在这个函数中。我将 60 作为我的超时发送到该函数,但它永远不会超时。它只是无限期地挂断了我的线程,我不确定有什么好的方法可以强制放弃此功能。

public int WriteQuery(string query, string dbConnStr, int timeout)
{
    int rowsAffected = -1;
    OdbcConnection conn = new OdbcConnection(dbConnStr);

    try
    {
            conn.Open();
            OdbcCommand command = new OdbcCommand(query, conn);
            command.CommandTimeout = timeout;

            OdbcTransaction trans = conn.BeginTransaction();
            command.Transaction = trans;

            OdbcDataAdapter adapter = new OdbcDataAdapter(command);
            adapter.UpdateCommand = command;

            rowsAffected = command.ExecuteNonQuery();
            trans.Commit();
        }
        catch(Exception)
        {
            throw;
        }
        finally
        {
            conn.Close();
            conn.Dispose();
        }

        return rowsAffected;
    }
}

最佳答案

无论如何,您正在以相同的方法打开和关闭连接。 尝试使用:OdbcConnection.ConnectionTimeout=60;

希望这对您有所帮助!

关于c# - 到 DB2 的 ODBC 连接挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336512/

相关文章:

c# - 扩展方法如何连接

sql-server - Informatica:工作流映射引用的 odbc.ini 文件错误

java - 如何仅使用 java 原始套接字验证 DB 远程服务器是否正在运行 [Telnet]

C# 多对多关系

c# - 路由和 url 中的 ASP.NET MVC 5 文化

适用于 PostgreSQL 的 Excel 2016 和 ODBC 驱动程序

php - 在 Windows 命令行上运行 PHP 脚本时,PDO ODBC 连接出现 "Could not find driver"错误

unicode - DB2 VARCHAR unicode 数据存储

sql - DB2 - SQL-将结果限制为某个列中某个值仅出现几次

c# - 如何知道用户在 WPF TextBlock 中单击了哪个字母