verwendetes Datenbanksystem: SQLite3
Hallo,
ich benötige Hilfe bei folgender Frage:
ich habe ein DataTable (tempTable), der die Kopie eines Tables meiner Datenbank ist. Ich möchte nun mit der Kopie arbeiten und möchte zwei strings wie folgt besetzen:
string InfoA = tempTable.Rows[?]["name"]
string InfoB = tempTable.Rows[?]["name"]
Die ? (vor allem die in meinem Kopf) sind das Problem: ich kenne zur Laufzeit die Indexwerte nicht. Bei einem SQLite-Query könnte ich mir helfen mit:
"SELECT id FROM tempTable WHERE name = 'Fridolin'"
Es gibt auch unter C# für DataTable eine Select-Methode; leider kommt die mit WHERE nicht klar?
[Error-Message fehlender Operand nach WHERE - mein string war wie der SQLite-Beispielstring von oben aufgebaut, ist mir aber schon klar, dass man den nicht 1:1 übernehmen kann]
Noch so eine Besonderheit: jeder Eintrag ist unique. Die Strings A und B sind Bezeichnungen für Schulklassen, die in der Form immer nur genau einmal so vorkommen können.
Gruß
GeneVorph
DataTable hat eine Select Methode.
Einfach mal in die Doku schauen, da siehst Du Beispiele der Expression.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke, ich kämpfe mich bereits seit heute Mittag durch die Doku 😃
DataRow[] dr = tempDataTable.Select("className = t6");
string x = (tempDataTable.Rows.IndexOf(dr[0])).ToString();
MessageBox.Show(x);
Das ist das "Beste", was ich aus zig Beispielen zusammenbasteln konnte^^
(u.a. hier )
Ich weiß, dass der Name der Klasse "t6" lautet und der Spaltenheader "className" - ich brauche einfach den Primary-Key, der unter der Spalte "id" zu finden ist.
Mit meinem Code erhalte ich eine System.Data.EvaluateException: die Spalte t6 wurde nicht gefunden. Das ist auch klar, es gibt keine Spalte "t6"; t6 ist mein Wert, den ich aus Spalte 1, Reihe 2 entgegennehme.
Ich nehme an, mit meiner Syntax stimmt etwas nicht - oder ich versuche es generell über den falschen Weg?
Über konkrete Hilfe würde ich mich sehr freuen,
Gruß
GeneVorph
Hi GeneVorph,
in der von Abt verlinkten Doku zur Select-Methode steht folgender Hinweis:
Erstellen der filterExpression Argument verwenden die gleichen Regeln für die DataColumn-Klasse Expression Eigenschaftswert für das Erstellen von Filtern.
Dort findet man dann folgendes Beispiel:
Wenn Sie einen Ausdruck für einen Filter erstellen, schließen Sie Zeichenfolgen in einfache Anführungszeichen eingeschlossen:
"LastName = 'Jones'"
Abgesehen von der gewöhnungsbedürftigen deutschen Übersetzung, ist es gar nicht so schwierig, die Doku zu lesen 😃
Weeks of programming can save you hours of planning