我有一个函数,用于通过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/