Much of the code can be eliminated if we use the ADO.DataAccessHelper library; its documentation section may help you to know if it meets your requirement.
In brief, it cuts the effort to write and manage connection, command, reader etc. In addition to that, it uses DbProviderFactory, which makes it more flexible to work with different databases.
Overall the design of the code looks fine. Bearing in mind that this code was posted ~3 years ago and you likely have learned quite a bit since then, I have some comments about both the UI and the code.
After adding an item, the text input value persists and the user must manually clear it. Many users would likely welcome having the value cleared after ...
I think I found a better architecture for my application by only using two classes, Controller and View, a swing class. So I rearranged for classes in to two.
public class ClientRegistrationController implements InputDialogController
private int clientID;
Client newClient = new Client();
private ClientRegistrationWindow ...