如何将DataAdapter的超时时间增加到3分钟?
当我使用以下方法执行查询时,我得到超时。
所以我的问题是:如何将超时设置为180秒?
我正在使用连接来使用queryresult填充dataSet。
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; }
您可以设置SelectCommand
的CommandTimeout
:
adapter.SelectCommand.CommandTimeout = 180; // default is 30 seconds
如果无法建立与数据库的连接,并且还希望增加该超时,则必须在连接字符串中执行此操作,例如(默认为15秒):
"Data Source=(local);Connection Timeout=30;Initial Catalog=AdventureWorks; Integrated Security=SSPI;"
请注意,您应该使用using
-statement用于连接和其他实现IDisposable
对象,如OleDbDataAdapter
。 通过这种方式,您可以确保正确处理所有非托管资源:
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; }