この質問で説明する機能は、指定されたSQLスクリプトを実行することです。スクリプトの内容は、アプリケーション実行時にユーザーが定義することを意図しています。スクリプトは、INSERT
ステートメントまたは複雑なシーケンスPL/SQL
ステートメントのいずれかにすることができます。入力は実行時(最終的にはStringインスタンス)に利用できるので、Javaを介して実行する必要があります。JavaでのSQLスクリプト実行の一般的な方法
現在のアプローチでは、ユーザ入力をPreparedStatement
でラップして実行しています。このソリューションは、既存のテストケースで機能します。主な関心事は、テストによってカバーされない可能性のある使用済みデータベースの全機能、すなわち同じユーザSQLスクリプトをデータベースベンダの提供コンソールに送ることに最も近いソリューションを提供することである。
PreparedStatement
で現在のアプローチに想定されている制限はありませんか? Javaを介したSQLスクリプト実行のためのより良い一般的なアプローチはありますか?
あなたは正確に何をしようとしていますか?単純にすべてを実行したいですか?http://sqlfiddle.com/のようなものを作成しようとしていますか? –
ここでセキュリティの脆弱性が懸念されていますか?スクリプトが潜在的に望ましくないまたは危険なことをするのを防ぐための適切な制限がありますか? (例えば、データベースのユーザ特権を介して) –
@SteveChambersユーザは自分自身のデータベースを変更し、完全に責任を負うので、脆弱性の懸念はありません。主な関心事は、データベースの全機能を最も効率的な方法で提供することです。 –