【问题标题】:Java JDBC MySQL query failingJava JDBC MySQL 查询失败
【发布时间】:2019-09-27 17:37:58
【问题描述】:

我正在使用带有 JDBC 的 Java Spring 应用程序查询本地 MySQL 数据库。我的应用程序使用SimpleDriverDataSource() 构造函数配置了一个DataSource 对象。然后它从该DataSource 中创建一个JDBCTemplate 对象。

它应该通过该模板对象在 MySQL 数据库上运行查询,但查询由于某些未知原因而失败!我认为这可能与我的DataSource有关。

以下是相关的代码。首先,我像这样配置一个数据源对象:

public DataSource getDataSource() {
      DataSource dbsrc = null;
      try {
          dbsrc = new SimpleDriverDataSource(new com.mysql.jdbc.Driver(), "jdbc:mysql://localhost/test?useSSL=false", "root", "");
      } catch (SQLException e) {
          e.printStackTrace();
      }
      return dbsrc;
    }

在调试中,dbsrc 似乎已被定义。它是否被正确定义是另一回事。这是 Eclipse 在定义后所说的剪辑: dbsrc definition

我认为 connectionPropertiesnull 有什么不对的地方。

这是一个失败的查询示例:

final List<String> methods = jdbcTemplate.query(methodsQuery, new RowMapper<String>() {
          @Override
          public String mapRow(ResultSet rs, int rowNum) throws SQLException {
            return rs.getString("PLANETDISCMETH");
          }
        });

当我单步执行该语句时,它进入jdbcTemplate.query() 方法并似乎在某个我看不到的步骤抛出异常(Eclipse 告诉我在项目中找不到源文件)。

任何帮助将不胜感激,我很乐意提供任何其他必要的信息。谢谢!

【问题讨论】:

  • 你能发布你的异常的堆栈跟踪吗?你用的是spring的SimpleDriverDataSource吗?
  • @Daniele 感谢您的回复!由于某种原因,它实际上并没有显示堆栈跟踪。事实上,它甚至可能不会抛出一个实际的异常。我所知道的是,由于调试器在该调用中暂停,因此执行被卡在 query() 调用中的某个地方。是的,我正在使用 SimpleDriverDataSource 来定义我的 DataSource 对象,如第一个代码 sn-p 所示。然后使用该 DataSource 构造我正在运行查询的 JDBCTemplate 对象。
  • 如果你没有堆栈跟踪,你怎么知道你的查询失败了。如果没有异常信息或对您的问题的清晰描述,我们真的无法为您提供帮助。
  • 可能驱动库抛出异常,然后这个异常被spring库捕获。在这种情况下,您不想暂停执行。如果您使用的是 Eclipse,请参阅此链接以避免暂停:stackoverflow.com/questions/3685294/…。如果然后spring爆炸,它应该报告原因
  • @MarkRotteveel 感谢您的回复!我知道它失败了,因为查询调用之后的代码永远不会执行,RowMapper 中的代码也不会执行。我认为执行在查询调用内停止,因为抛出了一些异常。我看不到堆栈跟踪,因为异常是在 JDBCTemplate 对象内部处理的。我真希望我能明白为什么它失败了!但是我还没有找到方法。

标签: java mysql eclipse maven jdbc


【解决方案1】:

感谢大家的帮助!事实证明,该问题与 DataSource 或 JDBCTemplate 对象无关。

对于我正在进行的项目,我得到了一个预制的 pom.xml 配置文件。此文件包含此 MySQL 版本属性标记:

<properties>
    <mysql.version>5.0.13</mysql.version>
</properties>

要使 JDBCTemplate 对象正确执行查询,我所要做的就是将该版本号更改为我正在使用的 MySQL 版本:

<properties>
    <mysql.version>8.0.15</mysql.version>
</properties>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多