Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
624 views
in Technique[技术] by (71.8m points)

c# - How to increase timeout of DataAdapter to 3 min?

When i execute a query with the following method, i get a timeout.

So my question is: how can i set the timeout to 180 seconds?

I'm using the connection to fill the dataSet with the 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;
 }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can set the CommandTimeout of the SelectCommand:

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

If you can't establish a connection to the database and you also want to increase that timeout, you have to do that in the connection-string, for example(default is 15 seconds):

"Data Source=(local);Connection Timeout=30;Initial Catalog=AdventureWorks; Integrated Security=SSPI;"

Note that you should use the using-statement for your connection and other objects implementing IDisposable like the OleDbDataAdapter. On that way you ensure that all unmanaged resources are disposed properly:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...