A connection is required to send commands and receive answers, usually in the form of a result set.
Once a connection has been built it can be opened and closed at will, and properties (such as the command time-out length, or transaction, if one exists) can be set.
Database connections are finite and expensive and can take a disproportionately long time to create relative to the operations performed on them.
This "state" includes server-side cursors, temporary products, connection-specific functional settings, and so on.
For example, the application may use a connection for too long when too many clients attempt to access the web site or one or more operations are blocked or simply inefficient.