【问题标题】:How do i check for a valid database connection using JDBCTemplate如何使用 JDBCTemplate 检查有效的数据库连接
【发布时间】:2020-10-18 07:47:17
【问题描述】:

我在我的 Spring Boot 应用程序中使用 JDBCTemplate 并成功连接到我的 AWS rds 实例,但我注意到使用 AutoWired 我不完全确定连接是如何建立的以及如何检查有效连接,我想抛出一个异常如果与数据库的连接无效。这是它的连接方式,它从 application.properties 获取数据库信息。

 private JdbcTemplate jdbcTemplate;
 public AwsBarcodeDao(@Autowired JdbcTemplate jdbc){
 jdbcTemplate=jdbc;

}

在我尝试做这样的事情之前,似乎没有任何迹象表明连接不成功,这是实际的查询:

final String selectProductSql = "SELECT barcodeOrUpc, productName FROM DB WHERE barCodeOrUpc="+barcode+";";

    products =   jdbcTemplate.query(selectProductSql, new ProductRowMapper());

【问题讨论】:

  • 如果您在启动过程中没有看到任何错误,我认为连接没有问题。我实际上对你的 sql 语句持怀疑态度。你有一个名为“DB”的表吗?我认为这可能是问题所在。如果您向我们提供您在尝试调用查询时遇到的错误消息会更容易。
  • 不,它实际上不是数据库,我只是不想在 stackoverflow 上公开发布它
  • 能否分享一下错误日志。我仍然认为这可能是因为连接以外的其他原因。
  • 如果您没有连接到数据库并且应用程序尝试对其执行操作,它应该会自动抛出错误。

标签: spring spring-boot spring-mvc jdbctemplate


【解决方案1】:

在您的 application.properties 中:

spring.datasource.validationQuery=your validation query
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=30000

其他道具可以是:

testOnBorrow
testOnReturn
validationQueryTimeout

commons-dbcp 有一个配置属性validationQuery,这结合testOnBorrow 和testOnReturn 可能会导致你看到的语句。

c3p0 有preferredTestQuery、testConnectionOnCheckin、testConnectionOnCheckout 和idleConnectionTestPeriod

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 2019-09-24
    • 2015-05-08
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2020-07-16
    相关资源
    最近更新 更多