<p>I have a winforms application that is doing the following:</p>

<p>on each query:</p>

<ol>
<li>Db connect</li>
<li>Db query</li>
<li>Db disconnect</li>
</ol>

<p>as we are trying to avoid having to keep the db connection open.  This suffers from performance as we have to connect / disconnect everytime.</p>

<p>What is the idealized model here to have the fastest performance but without having open connection for too long.  Is there a best practice here?</p>

The most efficient means is connection pooling, and
ADO.NET does this automatically for you
as long as you make sure to close your connections. Just wrap your
```
SqlConnection
```
objects into
```
using
```
statements, and you won't have to worry about it.