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