Die Funktionalität, die in dieser Frage besprochen wurde, besteht darin, das angegebene SQL-Skript auszuführen. Der Inhalt des Skripts soll vom Benutzer während der Anwendungslaufzeit definiert werden. Das Skript kann sein, ob eine INSERT
Anweisung oder eine Sequenz von komplexen PL/SQL
Anweisungen. Da die zur Laufzeit verfügbare Eingabe (eventuell als String-Instanz) über Java ausgeführt werden sollte.Allgemeiner Ansatz für die SQL-Skriptausführung in Java
Der aktuelle Ansatz umschließt die Benutzereingabe mit einer PreparedStatement
und führt sie aus. Diese Lösung funktioniert für die vorhandenen Testfälle. Das Hauptanliegen besteht darin, die volle Funktionalität der verwendeten Datenbank bereitzustellen, die möglicherweise nicht durch Tests abgedeckt ist, d. H. Eine Lösung, die der Übergabe des gleichen Benutzer-SQL-Skripts an die vom Datenbankanbieter bereitgestellte Konsole am nächsten kommt.
Ich frage mich, gibt es irgendwelche nicht vorgesehenen Einschränkungen in der aktuellen Ansatz mit PreparedStatement
? Gibt es einen besseren allgemeinen Ansatz für die SQL-Skriptausführung über Java?
Was genau versuchen Sie zu tun? Möchtest du einfach alles ausführen, versuchst du etwas wie http://sqlfiddle.com/ zu erstellen? –
Sind Sicherheitslücken ein Problem? Sind angemessene Einschränkungen vorhanden, um zu verhindern, dass das Skript etwas potenziell Unerwünschtes oder Gefährliches tut? (Z. B. über die Benutzerrechte in der Datenbank?) –
@SteveChambers gibt es keine Schwachstellen Bedenken, da Benutzer seine eigene Datenbank ändert und voll verantwortlich dafür ist. Das Hauptanliegen besteht darin, die volle Funktionalität der Datenbank auf die effizienteste Weise bereitzustellen. –