ODBC-соединение с DB2 зависает - PullRequest
2 голосов
/ 26 июля 2010

У меня есть функция, которую я использую для отправки запросов записи в DB2 через ODBC, и она время от времени зависает в этой функции, если я теряю соединение с 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;
    }
}

1 Ответ

0 голосов
/ 20 ноября 2014

В любом случае вы открываете и закрываете соединение тем же способом. Попробуйте использовать: OdbcConnection.ConnectionTimeout = 60;

Надеюсь, это поможет!

...