[.NET] Tabel in database creeren op basis van dataset

Pagina: 1
Acties:

  • MacWolf
  • Registratie: Januari 2004
  • Laatst online: 06-09-2024
Ik ben bezig met een applicatie die selectief gegevens synchroniseert van 1 database naar 1 of meerdere databases. Deze applicatie moet ook databases op andere machines en wellicht over het internet kunnen benaderen.

Nu zouden we er voor kunnen kiezen om eenvoudigweg de basisstructuur bij het begin te kopieren en ervan uitgaan dat de structuur niet meer (veel) zal wijzigen. Deze optie is het makkelijks, dan hoef ik geen extra code te schrijven, maar het minst leuk. Een optie die me meer aanspreekt is dat de applicatie tabbellen in de database aanmaakt of wijzigt wanneer er wijzigingen hebben plaatsgevonden in de brondatabase.

Nu heb ik al eens code geschreven om dynamisch een CREATE TABLE commandstring te maken voor een ouder project waarbij ik maar met een beperk aantal types rekening hoefde te houden. Voor dit project echter moeten alle mogelijke types geaccepteerd worden.

Nu hoopte ik dat het op de 1 of andere manier eenvoudig mogelijk is om een tabel aan te maken in de database op basis van een datatable. Nogmaals: eenvoudig is gewenst - anders prog ik zelf wel iets in elkaar.

Heeft iemand een suggestie?

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 01-12 17:00

pistole

Frutter

even een paar opmerkingen:
-je zou een structuur niet meer moeten veranderen nadat je in productie gaat
-je kan *denk ik* beter de 'remote' lokaties de data op laten halen ipv dat je de data gaat sturen, dit ivm firewalls en dergelijke; tenzij je controle hebt over alle lokaties

Voorts is het (in mssql) mogelijk om van een bestaande table een "CREATE TABLE" statement te laten genereren - dit hoef je dus niet zelf te doen.

Zie hier voor een voorbeeld.

Ik frut, dus ik epibreer


  • MacWolf
  • Registratie: Januari 2004
  • Laatst online: 06-09-2024
pistole schreef op donderdag 05 april 2007 @ 14:08:
even een paar opmerkingen:
-je zou een structuur niet meer moeten veranderen nadat je in productie gaat
-je kan *denk ik* beter de 'remote' lokaties de data op laten halen ipv dat je de data gaat sturen, dit ivm firewalls en dergelijke; tenzij je controle hebt over alle lokaties

Voorts is het (in mssql) mogelijk om van een bestaande table een "CREATE TABLE" statement te laten genereren - dit hoef je dus niet zelf te doen.

Zie hier voor een voorbeeld.
Bedankt voor je reactie. Het scripten lijkt me een werkbare oplossing voor mijn probleem, het is iets dat ik in het achterhoofd hou. Voorlopig heb ik besloten om maar de databases met de hand te kopieren en als ik wat tijd overhoud, dan voeg ik wel een Create Table functie toe.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:54

Janoz

Moderator Devschuur®

!litemod

Een handigere oplossing lijkt mij om de wijzigingen van de bron database te documenteren. Gewoon al je create en alter statments bijhouden samen met de verschillende versienummers. Zolang je dit proces goed hebt ingericht kun je heel makkelijk sql-scripts genereren om ook andere databases op te hogen naar de juiste versie. Bijkomend voordeel is dat je hier naast de create en alter statments ook insert en update statments bij kunt zetten voor het geval er niet enkel kolommen en tabellen bij komen, maar er ook conversie nodig is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'