java.sql.SQLException:SQL 字符串不是 glassfish 服务器中的查询

Posted

技术标签:

【中文标题】java.sql.SQLException:SQL 字符串不是 glassfish 服务器中的查询【英文标题】:java.sql.SQLException: SQL string is not Query in glassfish server 【发布时间】:2017-08-29 06:58:37 【问题描述】:

我们使用 executeQuery() 使用 java 代码删除表中的数据。当我们使用 Eclipse 运行程序时,它能够正确删除,但是在构建源代码并部署在 glassfish 服务器时出现错误。

java.sql.SQLException: SQL string is not Query

意思是,我们不应该将executeQuery() 用于 DML 操作。如果是这种情况,它甚至不应该在 eclipse 中工作。

下面是我的代码:

PreparedStatement deletePreparedStmt = null;

String sql = "DELETE FROM emp WHERE eno = ?";

try



    deletePreparedStmt = con.prepareStatement(sql);

    deletePreparedStmt.setInt(1,50);

    deletePreparedStmt.executeQuery();

    con.commit();



catch(Exception e)



    e.printStackTrace();


谁能澄清一下?

【问题讨论】:

把代码贴在问题里会更好 executeQuery() 需要一个 select 语句。使用 executeUpdate()。 是的,我知道。我会使用。但是为什么它在 Eclipse 中工作呢? 它在 Eclipse 中不起作用。做出决定的是驱动程序,所以要么您在 Eclipse 中使用非标准驱动程序,您的环境完全不同,要么您只是感到困惑并认为它在 Eclipse 中工作。跨度> 没有一个像样的驱动程序会让它飞起来,所以如果你仍然认为它是“在 Eclipse 中工作”,那你就大错特错了,而且是在浪费时间。 【参考方案1】:

GlassFish 服务器内部有 ojdbc7dms.jar,它不允许执行 DML 操作的 executeQuery() 方法。 正因为如此,我们才得到 ​​p>

java.sql.SQLException: SQL 字符串不是查询异常

【讨论】:

以上是关于java.sql.SQLException:SQL 字符串不是 glassfish 服务器中的查询的主要内容,如果未能解决你的问题,请参考以下文章

Cause: java.sql.SQLException: 请求的转换无效 ; uncategorized SQLException for SQL []; SQL state [99999]; er

Oracle DB:java.sql.SQLException:关闭连接

java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 发生错误

java.sql.SQLException:接近“on”:语法错误问题

Java:Sqlexception:位置不支持的 SQL92 令牌:178

java.sql.SQLException:字段 'supplier_id' 没有默认值