2010-07-26 17 views
2

J'ai une fonction que j'utilise pour envoyer des requêtes d'écriture à DB2 via ODBC, et il se bloque de temps en temps dans cette fonction si je perds ma connexion à DB2. J'envoie 60 comme mon temps d'attente à la fonction, mais il ne expire jamais. Il raccroche indéfiniment mon fil, et je ne suis pas sûr d'un bon moyen de forcer cette fonction à abandonner.Connexion ODBC à DB2 se bloque

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; 
    } 
} 
+0

Avez-vous une idée de quelle déclaration est celle qui se bloque? Je ne vois aucun type d'instruction de journal, donc je devine que vous n'êtes pas sûr à moins que vous ayez vu cela se produire en marchant le code dans le débogueur. –

Répondre

0

De toute façon, vous ouvrez et fermez la connexion de la même manière. Essayez d'utiliser: OdbcConnection.ConnectionTimeout = 60;

Espérons que cela aide!