In unserer aktuellen Codebasis verwenden wir MFC-DB-Klassen, um eine Verbindung zu DB2 herzustellen. Dies ist alles alte Code, der uns von einem anderen Entwicklerteam übergeben wurde, daher kennen wir einige der Geschichte, aber nicht alle.Dynamic SQL vs Static SQL
Der Großteil des Codes abstrahiert die Erstellung von SQL-Abfragen durch Funktionen wie Update() und Insert(), die etwas wie "INSERT INTO SCHEMA.TABLE" in eine von Ihnen angegebene Zeichenfolge einfügen. Dies geschieht über die Recordset-Klassen, die oben auf der Datenbank-Klasse
liegen. Die andere Möglichkeit, die SQL-Abfragen auszuführen, besteht darin, sie direkt in der Datenbankklasse mit dbclass.ExecuteSQL (String) auszuführen.
Wir fragen uns, was die Vor- und Nachteile jedes Ansatzes ist. Aus unserer Sicht ist es viel einfacher, den Aufruf von ExecuteSQL() zu machen, da wir keine andere Klasse schreiben müssen, aber es muss gute Gründe geben, den anderen Weg zu gehen. wir sind nur nicht sicher, was sie sind.
Jede Hilfe wäre großartig!
Dank Mark
aktualisieren ----
Ich glaube, ich habe Dynamische und statische SQL falsch verstanden werden. Ich denke, unser Code verwendet immer Dynamic, also wird meine Frage wirklich, sollte ich die SQL-Strings selbst konstruieren und eine ExecuteSQL() ausführen oder sollte dies in einer Klasse für jede Tabelle in der Datenbank abstrahiert werden, so wie die Recordset-Klassen von mfc machen?
Was immer Sie tun, sanieren immer die Werte, die Sie die setzen in SQL-Abfrage, wenn Sie dies nicht bereits tun. Dynamisches SQL ist gegenüber SQL-Injektionen sehr varnbar. Stellen Sie sicher, dass in den Daten nichts enthalten ist, das Ihre SQL-Anweisung ändern könnte. – Skurmedel