JAVA中如何判断jdbcTemplate的sql查询类型?

2024-01-06

我的要求是我想确定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(使用前将#替换为@)

JAVA中如何判断jdbcTemplate的sql查询类型? 的相关文章

随机推荐

  • 无法下载nltk数据

    import nltk nltk download 表明 SSL CERTIFICATE VERIFY FAILED 的情况下requests一个可以使用verify False 但是这里该怎么办 UPDATE 此错误在 Mac OS X
  • 在多态继承层次结构中强制执行类型安全的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我似乎经常遇到这种情况 但尚未找到我认为可以接受的解决方案 我经常会遇到并行继承层次结构 其中一个层次结构中的方法会从另一个层次结构中将匹配的类
  • 如何将数据从 Amazon DynamoDB 导出到 MySQL 服务器

    我没有处理 Amazon AWS DynamoDB 等 Nosql 数据库的经验 我有一些数据存储在 Amazon AWS DynamoDB 中 是否可以将数据从 DynamoDB 导出到 MySQL 服务器 如果是这样 如何实现这一目标
  • 间歇性 RequireJS 加载错误

    我有一个相当大的 Backbone js 项目 它使用 RequireJS 随着项目规模的增长 这里的 规模 指的是独立模块文件的数量 间歇性错误开始出现 大多数时候 这是一个对象错误 Uncaught TypeError object i
  • 验证损失远高于训练损失

    我对深度学习模型非常陌生 并尝试使用 LSTM 和 Keras Sequential 来训练多个时间序列模型 50 年中每年有 25 个观测值 1250 个样本 因此不确定是否可以将 LSTM 用于如此小的数据 然而 我有数千个特征变量 不
  • 将 UICollectionView 滚动到底部

    我想将 UICollectionView 滚动到底部 以便最后一个项目位于视图中 我尝试使用scrollToItemAtIndexPath 但它似乎不起作用 我希望在使用 Parse com 完成查询后发生这种情况 Thanks var q
  • 更改导入模块的日志级别

    假设您的代码正在使用一个模块 使用日志语句logging info来自模块而不是logger info来自记录器实例 并且您无法控制修改正在使用的模块 是否可以只为导入的模块自定义日志记录级别 而无需请求维护人员更改代码 这些问题描述了更改
  • 无法将 System.Net.Http 包安装到 Windows Phone 7.1 Silverlight 项目中

    我使用 Nuget 安装 Microsoft ASP NET Web API 客户端库 来获取最新的 System Net Http 程序集 以便在 Windows Phone 7 1 XNA 和 Silverlight 项目中使用 它可以
  • 指定 Pandas get_dummies 的可能值列表

    假设我有一个如下所示的 Pandas DataFrame 并且我正在编码 categorical 1 以在 scikit learn 中进行训练 data numeric 1 12 1 3 2 5 5 6 8 9 9 categorical
  • Java 8 并行 forEach 进度指示

    出于性能原因 我想使用并行 Lambda 流的 forEach 循环来处理Collection在爪哇 因为这是在后台运行的Service我想使用updateProgress double double 方法 以便通知用户当前进度 为了指示当
  • 将长表转换为宽表并根据行创建列

    我有一个如下所示的数据框 Customer ID Category Products 1 Veg A 2 Veg B 3 Fruit A 3 Fruit B 3 Veg B 1 Fruit A 3 Veg C 1 Fruit C 我想找出每
  • Powershell:当元素具有“xmlns”标签时,XPath 无法选择?

    我有一个非常简单的 xml 如下所示
  • 是否可以在不发布数据的情况下更改 Azure 队列消息可见性超时?

    使用 1 6 SDK 版本 2011 08 18 您可以更改队列消息的不可见超时 然而 阅读 REST 文档 似乎表明您必须回发消息 我知道该操作是为了更新整个消息 包括不可见超时 但我只想更改不可见超时而不必重新发送整个消息 这可能吗 谢
  • Netty异步写入响应和大小未知的大数据

    我开发了一个netty http服务器 但是当我在方法ChannelInboundHandlerAdapter channelRead0中写入响应时 我的响应结果来自另一台服务器 并且结果的大小未知 因此它的http响应标头可能具有内容长度
  • 有没有办法将私有 git 存储库与 Berkshelf 一起使用

    我创建了一本名为foo 并且想要与一起使用Berkshelf 我是这样写的Berksfile cookbook foo git https bitbucket org ironsand cookbook foo git 然后将食谱卖给coo
  • PHP中的字符串是字符数组吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 就像在 C 中一样 我可以将字符串用
  • Kubernetes 中的 DNS 不工作

    我按照以下示例进行操作https github com GoogleCloudPlatform kubernetes tree master cluster addons dns https github com GoogleCloudPl
  • 如何检测网络上的 iPhone?

    我正在尝试检测我的 iPhone 是否与我的 Raspberry Pi 在同一网络中 我想当我在家并且我的 iPhone 已在我的 LAN 中注册时执行脚本 似乎当手机处于待机状态时 甚至找不到 iphone 同步端口 6207 tcp u
  • 有效 web.xml 中缺少 web-fragment.xml 元素

    在我们的项目中 我们使用 Web 片段来定义一些 servlet 以便这些工件可以轻松地在其他项目中使用 现在奇怪的是 我们有一个 web fragment xml 但它的一些内容没有添加到有效的 web xml 中 举例来说 有效的 we
  • JAVA中如何判断jdbcTemplate的sql查询类型?

    我的要求是我想确定sql查询的类型 以便我可以相应地选择jdbcTemplate方法 假设我的sql查询是插入或更新类型那么我会选择 String sql insert update sql query jdbcTemplate updat