Daten aus txt-File einlesen und mit Datenbank vergleichen?
Ich bin gerade an einem Programm dran, dass aus einem txt File Produktdaten auslesen soll. Also Produkt ID, Produktanzahl usw.
Die Spalten im Textfile sind mit tabstops getrennt. Das einlesen des txt Files war soweit kein Problem. Ich habe es so gelöst, dass für jede Spalte eine Liste erstellt wird und in diese Listen die jeweiligen Daten importiert werden. Das Programm soll im Hintergrund mit einer MySQL Datenbank verbunden sein. In dieser Datenbank sind alle Produkte und deren Spezifikationen aufgelistet. Nun soll das Programm mithilfe der ProduktID (Primärschlüssel) die Spezifikationen aus der Datenbank nehmen und diese in einer neuen Tabelle speichern.
Da ich mit Datenbanken und MySQL nicht besonders vertraut bin, wollte ich hier um mögliche Lösungsansätze bitten.
Ich hoffe meine Ausgangslage ist verständlich ausgedrückt
Verwendetes Datenbanksystem: MySQL (mit phpmyAdmin)
Programm: Windows Forms App (.NET Framework)
1 Antwort
Ich habe es so gelöst, dass für jede Spalte eine Liste erstellt wird und in diese Listen die jeweiligen Daten importiert werden.
Es wäre einfacher, die Zeilen direkt auf Objekte zu mappen.
Beispiel:
class Product
{
public string Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
/* etc. ... */
}
// mapping:
var products = File.ReadAllLines("productData.csv")
.Skip(1) // skip headline row
.Select(line => line.Split('\t'))
.Select(column => new Product
{
Id = column[0],
Name = column[1],
Price = decimal.Parse(column[2]),
/* etc. ... */
});
Nun soll das Programm mithilfe der ProduktID (Primärschlüssel) die Spezifikationen aus der Datenbank nehmen und diese in einer neuen Tabelle speichern.
Soweit ich das verstehe, hat das nun nichts mehr mit der Datei zu tun?
Um mit der Datenbank zu kommunizieren, wäre es zunächst ratsam, die MySql.Data-Bibliothek in das C#-Projekt zu integrieren und das Tutorial von dev.mysql.com zu nutzen, um mit deren API vertraut zu werden. Auch in anderen Webartikeln findest du kurze Beispiele (wie hier). Des Weiteren solltest du dich mit SQL befassen, um eigene Queries formulieren zu können.
Um Daten aus der Datenbank zu holen, brauchst du einen SELECT-Query. Mit dem kannst du auswählen, von welcher Tabelle du welche Zeilen mit welchen Spalten du erhalten möchtest.
Das Einfügen von Daten klappt wiederum mit einem INSERT-Query.