2015-06-18 9 views
8

Wenn ich eine Abfrage mit der folgenden Methode ausführen, erhalte ich eine Zeitüberschreitung.Wie Timeout des DataAdapter auf 3 min erhöhen?

Also meine Frage ist: Wie kann ich das Timeout auf 180 Sekunden setzen?

Ich verwende die Verbindung, um das DataSet mit dem Query-Ergebnis zu füllen.

internal static DataSet executeQuery(string queryString) 
{ 
    // #connection 
    DataSet dataSet = new DataSet(); 
    string connectionString = Connection.connectionStringSQL01NavProvider(); 
    OleDbConnection connection = new OleDbConnection(connectionString); 
    OleDbDataAdapter adapter = new OleDbDataAdapter(queryString, connectionString); 

    // Open the connection and fill the DataSet. 
    connection.Open(); 
    try 
    { 
     adapter.Fill(dataSet); 
     DataTable dt = new DataTable(); 
     dt = dataSet.Tables[0]; 
     DataRow dr; 
     try 
     { 
      dr = dt.Rows[0]; 
     } 
     catch 
     { 

     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
     System.Windows.Forms.MessageBox.Show("Error executeQuery().! " + ex.Message); 
    } 

    return dataSet; 
} 

Antwort

20

Sie können einstellen, die CommandTimeout des SelectCommand:

adapter.SelectCommand.CommandTimeout = 180; // default is 30 seconds 

Wenn Sie keine Verbindung zur Datenbank herstellen können, und Sie wollen auch, dass die Timeout erhöhen:

connection.ConnectionTimeout = 180;  // default is 15 seconds 

Beachten Sie, dass Sie die using-Anweisung für verwenden sollten Ihre Verbindung und andere Objekte implementieren IDisposable wie die OleDbDataAdapter. Auf diese Weise stellen Sie sicher, dass alle nicht verwalteten Ressourcen ordnungsgemäß entsorgt werden:

internal static DataSet executeQuery(string queryString) 
{ 
    DataSet dataSet = new DataSet(); 
    string connectionString = Connection.connectionStringSQL01NavProvider(); 
    using (var connection = new OleDbConnection(connectionString)) 
    using(var adapter = new OleDbDataAdapter(queryString, connectionString)) 
    { 
     try 
     { 
      adapter.Fill(dataSet); // you dont need to open/close the connection with Fill 
     } catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
      System.Windows.Forms.MessageBox.Show("Error executeQuery().! " + ex.Message); 
     } 
    } 

    return dataSet; 
} 
Verwandte Themen