【发布时间】:2020-05-06 22:56:53
【问题描述】:
如何在 java 中执行本机查询(创建表),并返回获取有关操作是否成功的信息。我尝试过的每一种方法总是一样的。查询正在运行,但我收到有关“该查询有多糟糕”的错误,但正如我所说它有效。
try{
session.createNativeQuery("create table test (id number)").getResultList()
}
catch(Exception e){
// I am getting error "Could not extract result set metadata"
// Is there any way to execute getResultList() only if operation was select?
}
总结一下,我需要执行 CRUD。
1. 如果执行了“选择”,我需要结果列表。
2. 如果“创建”我不想执行 getResultSet()
3. 如果执行了“插入”,我需要有关受影响行数的信息。
等等... ... ...
最重要的是,我总是需要有关最终错误的信息!如果查询缺少语法或某些东西,我总是需要获取该信息。
有人可以帮帮我吗?几天来我一直在与这个作斗争......
【问题讨论】:
-
我们无法评论您未发布的代码和错误。您对 createNativeQuery 的尝试不起作用,因为您创建了一个查询,但从不执行它。您对 prepareStatement 的尝试没有达到您想要的效果,因为...您忽略了它返回的内容,并且没有遵循 javadoc 中的说明以获得结果:docs.oracle.com/javase/8/docs/api/java/sql/…。使用
executeUpdate()会更简单,但您也不需要忽略结果。阅读 javadoc。 -
createNativeQuery() 被执行。在该行之后,我的数据库中有所有内容。已执行,但这永远不会为我返回任何反馈。
-
不,不是。不在您发布的代码中。如果您的实际代码不同,并且您希望我们解释您的实际代码存在什么问题以及如何修复它,请发布您的实际代码。
-
你是对的,对不起,这是一个不好的例子......但是关于元数据的“错误”仍然困扰着我......当我执行查询时,我不想得到对象的结果集“创建”
-
不要。 getResultList() 用于...从 SELECT 查询中获取结果列表。你不想那样做。使用 executeUpdate()。
标签: java sql spring hibernate jdbc