无法使用 executeQuery 发出数据操作语句

Posted

技术标签:

【中文标题】无法使用 executeQuery 发出数据操作语句【英文标题】:Can not issue data manipulation statements with executeQuery 【发布时间】:2013-10-05 03:54:51 【问题描述】:

当我尝试运行我的 gui 以将数据插入表中时出现错误,错误是无法使用 executeQuery() 发出数据操作语句。这个 gui 的目的是让用户在文本区域输入信息,然后单击提交,然后将这些信息上传到数据库。

错误:java.sql.SQLException:无法使用 executeQuery() 发出数据操作语句。

【问题讨论】:

我知道,这是 executeQuery 的一种奇怪行为。如果你尝试执行更新,你应该会看到插入 @JunedAhson 没有什么“奇怪”的。 executeQuery() 执行查询并返回一个表。 executeUpdate() 执行更新并返回行数,所有这些都由 SQL 定义。 点击here!这也适用于 [参考链接][博客]。 【参考方案1】:

当我尝试从下面的代码中删除记录时遇到了同样的问题

@Repository
@Transactional
public interface IAeqplUserStagePermissionRepository extends JpaRepository<AeqplUserStagePermissionEntity, Long> 
    
    @Query(value = "DELETE FROM aeqpl_user_stage_permissions WHERE aeqpluser_id = :aeqpluserId",nativeQuery = true)
    int deleteByUserId(Long aeqpluserId);


解决方案:使用 @Modifying

    @Modifying
    @Query(value = "DELETE FROM aeqpl_user_stage_permissions WHERE aeqpluser_id = :aeqpluserId",nativeQuery = true)
    int deleteByUserId(@Param("aeqpluserId")Long aeqpluserId);

【讨论】:

【参考方案2】:

你必须使用这个方法PreparedStatement#executeUpdate()而不是executeQuery

执行此 PreparedStatement 对象中的 SQL 语句,它 必须是 SQL 数据操作语言 (DML) 语句,例如 插入、更新或删除;或不返回任何内容的 SQL 语句, 比如一个 DDL 语句。

【讨论】:

以上是关于无法使用 executeQuery 发出数据操作语句的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 executeQuery() 发出数据操作语句 [重复]

java.sql.SQLException:无法使用 executeQuery() 发出数据操作语句。 23

无法使用 executeQuery() 发出数据操作语句 [重复]

SQLException:“无法使用 executeQuery() 发出数据操作语句”[重复]

Can not issue data manipulation statements with executeQuery() 异常处理

无法从 Statement.executeQuery() 中获取选定的列