gpt4 book ai didi

java - java中如何判断用户输入的是哪种类型的sql查询

转载 作者:行者123 更新时间:2023-11-29 07:35:45 26 4
gpt4 key购买 nike

我正在开发一个简单的项目,它从用户那里获取 SQL 查询并在 JTable 中显示结果我想确定是否输入了 select 语句或输入了任何其他 DML/DDL 语句,以便我可以相应地调用 executeQuery()executeUpdate()。我想检查查询是否以 select 开头。有一个更好的方法吗。 enter image description here

最佳答案

您无需尝试决定是否需要调用 executeQueryexecuteUpdate,只需使用 execute 即可。

Statement.execute(String) 的 javadoc说:

Executes the given SQL statement, which may return multiple results. In some (uncommon) situations, a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string.

(强调我的)

execute 方法有一个 boolean 返回值,这意味着:

  • false:第一个结果是更新计数,或者没有结果
  • true :第一个结果是结果集

我故意说第一个结果,因为 JDBC 允许单个语句具有多个结果(例如,SQL Server 存储过程可以返回多个结果集并以任何顺序更新计数)。

如果false,您需要调用getUpdateCount 。这要么返回更新计数(0 或更高),要么返回 -1 来指示没有更多结果。顺便说一句:当结果为 true 时调用 getUpdateCount 也应该返回 -1

如果true,您需要调用getResultSet获取结果集。

要处理更多结果(即,如果您刚刚处理了结果集或 getUpdateCount 不是 -1),则调用 getMoreResults ,它也返回一个 boolean 值,其含义与上面完全相同,等等。

这听起来很复杂,但是大多数数据库只支持单个结果集,如果你只关心结果集,那么你只需要检查 execute 是否返回 true 然后使用 getResultset (如果 false 则不使用)。

关于java - java中如何判断用户输入的是哪种类型的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882642/

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