我的要求是我想确定sql查询的类型,以便我可以相应地选择jdbcTemplate方法。
假设我的sql查询是插入或更新类型那么我会选择
String sql ="insert/update sql query";
jdbcTemplate.update(sql);
jdbcTemplate 方法,如果选择我的 sql 查询类型,那么我将选择
String sql ="select sql query";
jdbcTemplate.query(sql);
jdbcTemplate 方法。
java中如何有效判断sql查询的类型?
如果我的查询同时包含 update 和 select sql 语句,应选择哪种 jdbcTemplate 方法?例如
更新表设置column_name =“abc”其中column_name in(选择
表中的列名,其中列名 =“xyz”);
Update:实际上,我从 Web 表单接受应用程序用户的 sql 查询,这就是出现实际问题的原因,因为用户可以通过表单发布任何类型的 sql 查询,并且我想根据查询类型选择特定的 jdbcTemplate 方法。
在 Oracle 中,您可以在执行查询之前对其进行解析
declare
l_theCursor integer default dbms_sql.open_cursor;
begin
dbms_sql.parse( l_theCursor, 'SELECT 1 FROM DUAL', dbms_sql.native );
end;
无论如何,这是一个很好的做法,因为您将从用户输入中接收 SQL。如果该语句无效,您将收到相应的错误消息。当然上面的语句并没有被执行。
解析语句后,您可以查询 v$sql 以找出 command_type:
select command_type, sql_text
from v$sql t
where sql_text = 'SELECT 1 FROM DUAL';
各种command_types如下所示:
2 -- 插入
3 -- 选择
6 -- 更新
7 -- 删除
189 -- 合并
您可以通过以下方式获取完整列表select * from audit_actions order by action
希望有帮助:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)