2015-06-18 16 views
8

Po uruchomieniu kwerendy przy użyciu poniższej metody otrzymuję limit czasu.Jak zwiększyć limit czasu DataAdapter do 3 min?

Moje pytanie brzmi: jak ustawić limit czasu na 180 sekund?

Używam połączenia do wypełnienia zestawu danych z wynikiem zapytania.

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

Odpowiedz

20

Można ustawić CommandTimeout z SelectCommand:

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

Jeśli nie można nawiązać połączenia z bazą danych i chcemy także, aby zwiększyć ten limit czasu:

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

Należy pamiętać, że należy użyć ustawienia using dla połączenie i inne obiekty implementujące IDisposable, takie jak OleDbDataAdapter. W ten sposób upewniasz się, że wszystkie niezarządzane zasoby są prawidłowo rozmieszczone:

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