首页 > 解决方案 > 如何拒绝 DML 和 DDL 查询?

问题描述

我同意应该调整数据库用户权限以防止他运行 DML 或 DDL 查询,但我正试图从客户端做类似的事情。JDBC 端。

我下载了此处找到的 Oracle 驱动程序。

当驱动程序及其配套 JAR 位于类路径中时,我运行了以下部分测试代码:

Connection connection = DriverManager.getConnection(url, username, password);
connection.setAutoCommit(false);
// connection.setReadOnly(true); // Doesn't help

Statement statement = connection.createStatement();
statement.executeQuery("ALTER TABLE GELBANA_TEST.TABLE1 ADD HQ varchar2(40) DEFAULT 'NY'");

connection.rollBack();

但是该列已添加到表中!

我也可以删除该列。这还不足以阻止用户运行 DML 或 DDL 查询吗?我需要阻止他对数据库进行任何更改。应该只允许他选择数据。我检查了连接 U​​RL 参数是否有可能拒绝此类查询的内容,但我没有发现任何关闭。

标签: javaoraclejdbcoracle12cexecutequery

解决方案


推荐阅读