Ja, GetNames() ist korrekt.
Wie alles in .Net, Strings ist erst mal case sensitive.
Aber es gibt noch eine caseinsensitve form des TryParse:
https://docs.microsoft.com/de-de/dotnet ... m-tryparse(system-type-system-readonlyspan((system-char))-system-boolean-system-object@)
Parameter sind wirklich easy:
Code: Alles auswählen
FbConnection connection = new FbConnection();
FbCommand command = connection.CreateCommand();
command.CommandText = "Select * from myTable where F1 = ? and F2 = ?";
Dictionary<string, FbParameter> parms = new Dictionary<string, FbParameter>
{
{ "P1", new FbParameter("P1", FbDbType.VarChar) },
{ "P2", new FbParameter("P2", FbDbType.Decimal) },
};
command.Parameters.AddRange(parms.Select(p => p.Value));
parms["P1"].Value = "ABC";
parms["P2"].Value = 123.45m;
DataTable table = new DataTable();
table.Load(command.ExecuteReader());
Parameter werden im Commandtext als "?" definiert.
Über das Dictionary erstelle ich mir für den leichteren Zugriff die Parameter mit sprechenden Namen, die ggf auch aus anderen Quellen stammen können, z.B. nameof(Personal.Name).
Bis zum Teil AddRange ist die Deklaration abgeschlossen.
Der Rest kann dann beliebig oft wiederholt werden.
Analog kann man auch Update/Delete/Insert kodieren.
"Insert into mytable (F1, F2) values(?, ?)"
"Delete ... where " (wie beim Select)
"update mytable set F1 = ?, F2 = ? where K1=?"
usw.
In den Konzept spielen übrigens DataTable und DBDataAdapter eine sehr große Rolle. Passend zu einem Select auf eine Tabelle mit Primary Key generiert der TableAdapter die passenden Delete/Insert/Update.
TableAdapter und DataTable werden dann verheiratet.
Ein TableAdapter.Update() führt dann alles auf einen Schlag aus.
Die DataTable unterstützt bis zu 16,7 Mio Zeilen.
Jetzt stelle Dir also vor, per FBDataReader füllst du eine DataTable.
Anschließend markierst du die Zeilen als "New".
Dann verbindest du zur 2. DB mit einer identischen Tabelle und verküpfst einen Adapter mit einem generierten Insert mit deiner gerade geladenen Tabelle aus DB1 und führst den Adapter.Update() aus.
Und Schwups werden bis zu 16,7 Mio Zeilen in die 2. DB kopiert.
SQL-technisch benötigst du nur einen "select * from mytable".
Den Rest mach ADO.Net.
https://docs.microsoft.com/de-de/dotnet ... ataadapter
Statt der Factory kannst du direkt die Fb-Versionen verwenden.