No. We can't. We don't know either.
How long is a piece of string?
How much data are you fetching? How fast is your server? What is the connection like? Are you returning the result of a simple query or a complex stored procedure? What is your server load like at the moment of the query? These and other factors will affect the time taken.
You can force SQL server to give you a progress indication, but it isn't simple, and may be more trouble than it is worth - there is an explanation here:
http://geekswithblogs.net/mrnat/archive/2004/09/20/11431.aspx[
^]
Note that you will need a separate thread, and that you will have to take care of cross-thread Invokes to update the status bar!
"Thanks for your quick response, does it mean no simple solution for that?
how can i tell the users that the programming is accessing the database and doing the job rather than nothing shows up"
There is no simple, accurate solution, no. You can show progress if you follow the link I gave, but the only other thing you can do is to move the query to a separate thread and display on non-specific progress indicator - asynchronous SQL is also quite complicated, so I wouldn't recommend it for simple queries. It needs to be a separate thread so that the UI can be updated to actually show the progress change, otherwise your UI will "jam" in the ExecuteReader method call or whatever!