Bereitstellung eines Mechanismus für parametrisierte SQL-AbfragenODBC-Bibliotheken bieten normalerweise die Möglichkeit, parametrisierte Abfragen zu erstellen, die die Abfrage und die Parameter separat an die Datenbank übergeben. Dies eliminiert grundsätzlich das Risiko von SQL-Injection-Angriffen, ist aber auch aus Programmiersicht sehr praktisch. Da JMP über ODBC-Abfragen verfügt, sollte es auch über parametrisierte Abfragen verfügen, damit Sie Folgendes tun können:
Execute SQL(database,
"Select * from Employees where Name like ? and Status=?",
"BobList",
{"Bob", "Active"}
);Parametrisierte Abfragen von pyodbc:
https://github.com/mkleehammer/pyodbc/wiki/Getting-started#parameters
Die parametrisierten Abfragen des .NET-Ökosystems:
https://docs.microsoft.com/en-us/dotnet/api/system.data.odbc.odbccommand.parameters?redirectedfrom=MSDN&view=dotnet-plat-ext-5.0#System_Data_Odbc_OdbcCommand_Parameters
Automatisierung und SkriptingBetreff: Bereitstellung eines Mechanismus für parametrisierte SQL-AbfragenIch denke, Sie könnten dies mithilfe benannter Abfragen implementieren: Create Named Query() und Execute Named Query(). Im Hintergrund würden diese Funktionen die ODBC -Funktionen SQLPrepare(), SQLBindParameter() und SQLExecute() verwenden. Die Funktion Create Named Query() würde die SQL-Anweisung und -Parameter übernehmen. Sie würde ein benanntes Abfrageobjekt zurückgeben. Die Funktion Execute Named Query() würde das Datenbankverbindungsobjekt, das benannte Abfrageobjekt und die Parameterwerte als Eingaben übernehmen und die SQL-Ergebnisse als Datentabelle zurückgeben (falls erforderlich). Das Datenbankverbindungsobjekt könnte eine Eingabe der Funktion „create“ statt der Funktion „execute“ sein. Der Vorteil dieses Ansatzes besteht darin, dass die Erstellung bei der Skriptinitialisierung erfolgen kann, wobei der ausführende Teil separat bleibt, was wahrscheinlich effizienter ist.
Betreff: Bereitstellung eines Mechanismus für parametrisierte SQL-AbfragenIch hätte auch gerne so etwas, zumindest um SQL-Verbindungs- und Abfrageargumente separat übergeben zu können, um Unit-Test-Funktionen zu vereinfachen. Beim Testen einer Funktion, die eine SQL-Abfrage enthält, könnte die Verbindung beispielsweise einfach gegen eine lokale JMP-Tabelle ausgetauscht werden.