Benutzer mit den meisten Antworten
Datenimport aus versch. Quellen

Frage
-
Halllo! Ich möchte bestimmte Daten aus versch. Quellen importieren. Als Quellen könnte ein SQLServer, Exceldatei, Textdatei usw. dienen. Der Benutzer soll die Datensätze selektieren, die er bearbeiten möchte. Die Quellen sind icht gleich aufgebaut, d.h. auf dem einem SQLServer heissen die relevanten Spalten Spalte1, Spalte2, Spalte3 und die Tabelle T1, auf dem anderen SQLServer sind dei Spalte SpalteA, SpalteB, SpalteC und die Tabelle heisst T2. Ähnlich verhält es sich mit den Exceldateien. Ich suche nach einer Möglichkeit, diese Vielfalt ;) zu beherrschen. Wie kann ich am besten einein geiegneten Datenadapter aufbauen?
Vielen Dank für die Hilfe!
Antworten
-
Hi,
Excel, Access, CSV, dBase, usw. kannst Du mit der Jet-Engine auslesen und hierfür die Klassen aus dem System.Data.OleDb Namespace verwenden. Für neuere Varianten (Excel 2007+, Access 2007+) wäre dann die Access Database Engine sinnvoller, die kann man unter gewissen Voraussetzungen auch in einer 64 Bit Variante verwenden (die Jet Engine gibts nur für 32 Bit). Hier mal ein Beispiel für CSV:
Für SQL Server würde ich System.Data.SqlClient vorschlagen.
Im Endeffekt liest Du mit allen Methoden die Inhalte in eine DataTable und kannst die dann verarbeiten.
Falls Du die Metadaten brauchst (also Tabellen und Spaltennamen), lässt sich das auch über die Klassen in den o.g. Namespaces lösen.
http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbconnection.getoledbschematable.aspx
http://msdn.microsoft.com/de-de/library/ms136367.aspx
...
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert DulcineaS Samstag, 22. September 2012 15:45
Alle Antworten
-
Hi,
Excel, Access, CSV, dBase, usw. kannst Du mit der Jet-Engine auslesen und hierfür die Klassen aus dem System.Data.OleDb Namespace verwenden. Für neuere Varianten (Excel 2007+, Access 2007+) wäre dann die Access Database Engine sinnvoller, die kann man unter gewissen Voraussetzungen auch in einer 64 Bit Variante verwenden (die Jet Engine gibts nur für 32 Bit). Hier mal ein Beispiel für CSV:
Für SQL Server würde ich System.Data.SqlClient vorschlagen.
Im Endeffekt liest Du mit allen Methoden die Inhalte in eine DataTable und kannst die dann verarbeiten.
Falls Du die Metadaten brauchst (also Tabellen und Spaltennamen), lässt sich das auch über die Klassen in den o.g. Namespaces lösen.
http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbconnection.getoledbschematable.aspx
http://msdn.microsoft.com/de-de/library/ms136367.aspx
...
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert DulcineaS Samstag, 22. September 2012 15:45
-
Hi DulcineaS,
wenn es mit der Jet-Engine nicht klappen sollte, bietet sich das Strategie Pattern an.
Du Implementierst ein Interface welches dein Programm verwendet um die Daten zu bearbeiten.
Wenn die Datenquelle ausgewählt wird erstellst du von der Konkreten Strategie eine Instanz, die dann intern weiß wie sie die Daten Läde, Speichert und so Konvertiert, dass du sie Bearbeiten kannst.
MFG
Björn