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

Posted

技术标签:

【中文标题】无法使用 executeQuery() 发出数据操作语句 [重复]【英文标题】:Can not issue data manipulation statements with executeQuery() [duplicate] 【发布时间】:2015-09-04 03:38:15 【问题描述】:

我正在向我的数据库注入 JSON 文件,并尝试在插入路线和方向(以及插入的方向和路线记录)后从 routes 表中获取 route_id。我已将prep.executeUpdate() 更改为prep.executeQuery(),但出现此错误:

java.sql.SQLException:无法使用 executeQuery() 发出数据操作语句。 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)

代码:

            DatabaseMetaData dbm = con.getMetaData();

            ResultSet routesTables = dbm.getTables(null, null, "routes", null);

            if (routesTables.next()) 

                PreparedStatement prep = con
                        .prepareStatement("INSERT INTO routes(direction, route)"
                                + "VALUES( ?, ?)");

                prep.setString(1, direction);
                prep.setInt(2, route);

                ResultSet rs = prep.executeQuery();


            

在这种情况下如何获取 route_id ResultSet rs = prep.executeQuery();?目前我收到上述错误。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您必须调用prep.executeUpdate(); 来获取插入语句。 不是ResultSet rs = prep.executeQuery();prep.executeQuery(); 仅适用于选择查询。

【讨论】:

然后我可以得到route_id 这样的int rs = prep.executeUpdate();? @light 不,你在 rs 中得到了 effected rows 如果你需要 id 看这里***.com/questions/1915166/…

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

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

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

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

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

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

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