gpt4 book ai didi

java - 限制 executeQuery 在 java for oracle 中的数据操作

转载 作者:搜寻专家 更新时间:2023-10-30 23:36:34 25 4
gpt4 key购买 nike

我正在用 java 开发查询浏览器,我想限制用户操作数据。所以我正在使用 executeQuery,因为我搜索了很多问题,所有问题都得到了回答,即 executeQuery 用于选择并且不允许像在 link 上那样进行数据操作。 .
它在 MySql 上工作得很好,但在涉及到 Oracle 时出现错误

ORA 00900: invalid SQL statement

但真正的问题是,在数据库中更新记录。我在更新、删除、插入和删除时收到相同的错误,但所有操作数据库中数据的命令。
现在我可以选择检查我的查询字符串是否以数据操作关键字开头,但我试图避免这种检查,并且它在 MySql 中工作得非常好,但没有得到 Oracle 的问题。
下面是代码示例

Connection conn = null;
Statement stmt = null;
ResultSet query_set = null;
try {
String query = "insert into users values(1,'name')";
Class.forName ("oracleDriver"); //Oracle driver as our database is Oracle.
conn = DriverManager.getConnection("oracleDbUrl", "dbUsername", "dbchecksum"); //login credentials to the database
stmt = conn.createStatement();
query_set = stmt.executeQuery(query);
} catch(Exception e) {
e.printStackTrace();
}

请建议如何在不对查询字符串进行检查的情况下限制用户进行数据操作,以及 Oracle 这种行为背后的原因。

最佳答案

问题通过检查查询字符串是否以 select 开头来解决,但我仍然不明白 oracle 这样做的原因。有正当理由的答案是开放的。

    Connection conn = null;
Statement stmt = null;
ResultSet query_set = null;
try {
String query = "insert into users values(1,'name')";
Class.forName ("oracleDriver"); //Oracle driver as our database is Oracle.
conn = DriverManager.getConnection("oracleDbUrl", "dbUsername", "dbchecksum"); //login credentials to the database
stmt = conn.createStatement();
if(query.startsWith("select"))
query_set = stmt.executeQuery(query);
else
System.out.println("Only select query allowed");
} catch(Exception e) {
e.printStackTrace();
}

关于java - 限制 executeQuery 在 java for oracle 中的数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com