Non sono molto pratico con i DB...comunque mi sembra che il tuo ragionamento fili nel verso giusto, non devi far altro che creare un ciclo dove leggi le varie righe e colonne del tuo db. Prova a dare un' occhiata a dataset, tables, datatable, ecc. su msdn:
http://msdn.microsoft.com/it-it/libr...a.dataset.aspx
Con le mie conoscenze da "hobbysta" avevo realizzato qualcosa di simile prima con my.settings e poi con un file xml molto semplice, nel tuo caso più o meno così:
codice:
<mario>
  <button>
    <ID>button1</ID>
    <attivo>si</attivo>
    <testo>abcd</testo>
  </button>
  <button>
    <ID>button2</ID>
    <attivo>no</attivo>
    <testo>123</testo>
  </button>
</mario>
Con dataset leggevo il file xml, poi con un ciclo impostavo i vari controlli e proprietà. Nel mio programma avevo un numero definito di controlli che non creavo a runtime ma semplicemente li rendevo attivi e visibili in base al valore della riga "attivo" dell' xml. Per comodità avevo messo la possibilità di cambiare le impostazioni caricando i dati dell' xml in un datagridview direttamente nel programma.
In pratica ho usato il file xml come se fossa una tabella...però senza il discorso di connettere un db, quindi con il link sopra dovresti risolvere.
Per generare controlli a runtime ci sono molte discussioni sul forum.
Di più non so.