web-dev-qa-db-ja.com

DataAdapterのタイムアウトを3分に増やす方法は?

次のメソッドでクエリを実行すると、タイムアウトが発生します。

だから私の質問は:タイムアウトを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;
 }
13
JP..t

CommandTimeoutSelectCommand を設定できます。

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;
}
39
Tim Schmelter