in primul rand tb sa mantionez ca Andrei e mult mai in masura decat mine sa iti spuna care e forma cea mai eleganta de a aranja codul (asta e un aspect la care eu mai am de lucru) insa legat de blocul try-catch, e de preferat sa ti cat mai putin cod posibil in el (eu folosesc acel bloc doar pt a deschide coneziunea ca sa dea mesaj de eroare in loc sa crape programul in cazul in care nu este corect connection string-ul) si se merita sa testezi varianta cu using de care zicea Andrei.
legat de cheile multiple: eu nu le folosesc. prefer sa folosesc un id numeric care sa se autoincrementeze.
inca un sfat foarte util: cumpara cel putin o carte pe tema asta (e foarte util sa ai la indemana acele exemple) - chiar daca nu este special pt combinatia MySQL - VS o sa fie utila pt ca va semana foarte mult modul de abordare si cea mai mare parte din cod va fi la fel.