gabernardone,
Para habilitar o botão, TODOS os controles devem estar, digamos, “alterados/preenchidos”, ou deve ocorrer quando QUALQUER UM deles for alterado?
Se for qualquer um, crie um método e chame o método através do evento change de cada controle, lembrando que seu método será acionado SEMPRE, EM CADA CONTROLE. É isso mesmo?
Se TODOS os controles precisam estar preenchidos/alterados, então execute a sugestão do Isaque_Fernando.
Para implementar a solução do stackoverflow você teria que pesquisar sobre eventos para entender o funcionamento.
Com relação a abertura desnecessária do banco e como você não citou nada sobre a aplicação (se é desktop, web, etc. que possuem soluções específicas para cada plataforma).
Não é comum abrir/fechar a conexão a cada persistência. Geralmente (através do login) o usuário é validado, a conexão com o banco é realizada e a desconexão é feita no encerramento da aplicação. Mas como toda regra tem uma exceção…
Você deve procurar soluções que permitam guardar o status da conexão, de forma que você a possa “enxergar” nas diversas partes de seu aplicativo, mantendo essa (única) conexão sempre ativa.
Nesse caso, você não precisa abrir a conexão todas as vezes, basta verificar se a conexão ainda está aberta/ativa (se estiver fechada, abra) e execute a persistência.