1

私のアプリケーションの 1 つで、データベースに対して直接 SQL クエリを発行する機能をユーザーに提供しています。SQL テキストをテキスト ボックスに入力すると、JDBC を使用する場合とまったく同じように実行されます。

明らかに、私はこれらのユーザーを非常に信頼しています。しかし、SELECT ステートメントのみを発行するようにプログラム的に制限したいと思います。DELETE/UPDATE/INSERT してはいけません。ここでは、JDBC自体が役立つのではないかと思いました。java.sql.Statement クラスで executeQuery() メソッドを見つけました。しかし、その方法では DELETE を呼び出すことができます (おそらく UPDATE と INSERT も)。ResultSet が返されないため例外がスローされますが、レコードを削除した後でのみスローされます。

そこで、ここで質問します。JDBC で、クエリの場合にのみ SQL ステートメントが実行されるようにする方法はありますか? それとも、ステートメントを自分で解析して、自分の希望に沿っていることを確認する必要がありますか?

4

1 に答える 1

4

DELETE / UPDATE および INSERT パーミッションを持たないユーザーで DBMS に接続することをお勧めします。

于 2012-06-14T10:45:36.470 に答える