Sen direk elle eklemişsin, o zaman foreach'e gerek yok. Ama boş olanlarıda ekletmeye çalışırsın if ile kontrol yapmazsan.
Ordaki Page.Controls ben genelde web taraflı çalıştığım için web sayfasındaki tüm textboxları bulur. Sen onu this.Controls veya form.Control olarak değiştirebilirsin ki kullanmana gerek kalmadı.
For'un çalışma mantığıda şu. Sen o dictionary'e isimleri ekliyorsun ve şu şekle geliyor.
dic 0. eleman - "ali veli"
dic 1. eleman - "ahmet mehmet"
dic 2. eleman - "ayşe fatma"
Bunu 0'dan başlayıp 3'ten küçük olana kadar döner ve sırayla i neye karşılık geliyorsa yazar. i = 0 durumunda ali veli, i = 1 durumunda ahmet mehmet ..vs
Ama senin database'inde id değerinin auto_increment falan olması gerek. Id değerleri unique olmalıdır. Aksi halde aynı id ile aynı isimleri eklersin ve aramada sana aynı sonuçlar birçok kez gelir.
O for'uda şu şekilde yaz.
For Each p As var In dic
Next
insert into tablom (ADI,SOYADI) values (p.Key, p.Value);
End