1

在我的一个应用程序中,我为用户提供了针对数据库发出直接 SQL 查询的能力。他们将 SQL 文本输入到文本框中,然后我完全按照使用 JDBC 的方式运行它。

显然我非常信任这些用户。但我想以编程方式将它们限制为仅发出 SELECT 语句。他们不应该删除/更新/插入。我想也许 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 回答