You should only keep a connection to the database open when you are using it to retrieve or save data to it.
You should open a connection to your database to fill your DataSet and then close the connection after you finish the fill (or if the fill fails).
When you are ready to save the data to the database, open a connection, issue an update using your DataAdpater in order to update your database, and then close the connection again.
If your application fails to close a connection, it could prevent other applications from connecting to the database. That is why it is best to make sure to close connections after you are finished executing your query.
If you need to ensure that data is refreshed, then periodically reconnect to the database to retrieve fresh data. Determine when the most logical time is best to do this.
Just a thought, if you really want to get fancy, consider writing a service that uses sockets so that both of your applications can connect to it. When one of the application updates the database, this service can push a message to all of the applications connect to it (via sockets) to inform them of the update. This service would have methods to save and retrieve data from the database that your applications would use. That way, whenever any application calls these methods the service will know to push a message out to anyone listening, informing them that there is new data available. You could use UDP to transmit the message even.
-Frinny