次のメソッドでクエリを実行すると、タイムアウトが発生します。
だから私の質問は:タイムアウトを180秒に設定するにはどうすればよいですか?
接続を使用して、dataSetにqueryresultを入力しています。
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
の SelectCommand
を設定できます。
adapter.SelectCommand.CommandTimeout = 180; // default is 30 seconds
データベースへの接続を確立できず、そのタイムアウトを増やしたい場合は、たとえば、接続文字列でそれを行う必要があります(デフォルトは15秒です)。
"Data Source=(local);Connection Timeout=30;Initial Catalog=AdventureWorks; Integrated Security=SSPI;"
接続およびusing
のような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;
}