gpt4 book ai didi

java - 我们访问数据库有时间限制吗?

转载 作者:行者123 更新时间:2023-12-05 01:03:27 24 4
gpt4 key购买 nike

嗯。我最近才得出关于这个的结论。我们访问数据库有时间限制吗?准确的说是通过Java的JDBC和MySQL提供的驱动来访问MySQL数据库?

为了更准确地了解发生了什么,我给你更多的细节:

所以我得到了一个实际上提供 RESTful web 服务的网站,它还支持 Kitty-Cache 进行缓存,因为一些计算是昂贵的。我运行该项目,并从浏览器访问所有 api 地址,一切正常。

奇怪的是我没有关机,今天再次访问,与数据库(MySQL)有关的地址只是错误,内部服务器错误,错误是在一个地方出现NullPointerException它不应该发生。我停止了项目,再次运行它,访问相同的地址,它显示了数据。

有时间限制吗?我们如何刷新数据库连接?我想我会尝试重新连接它,但我不确定如何。

代码:

java.sql.Connection conn = null;

try {
Class.forName("com.mysql.jdbc.Driver");
String conStr =
"jdbc:mysql://" + this.dbHostname +
":" + this.dbPort + "/" + this.dbName;
conn = DriverManager.getConnection(conStr, this.dbUsername, this.dbPassword);
this.isConnectingSuccess = true;
} catch (ClassNotFoundException cnfe) {
throw new IllegalDbCmdExecution(cnfe.getMessage());
} catch (SQLException sqle) {
throw new IllegalDbCmdExecution(sqle.getMessage());
}

最佳答案

嗯。我设法解决了这个问题。我所做的是,以前当我想查询数据库时,我调用 execute() 方法。现在,execute() 方法是 final方法:

public final void execute() {
preExecuting();
executing();
postExecuting();
}

然后我将 preExecuting 和 postExecuting 声明为 void 方法,当然,可重写:

public void preExecuting() { }
public void postExecuting() { }

然后作为抽象方法执行,因此,必须实现这个方法:

public abstract void executing();

所以,稍后我需要对执行做一些事情,这实际上是将之前在 execute() 中的代码剪切到这个执行方法中。在进一步的类(class)中,我使用代码覆盖预执行以通过执行“SELECT 1”来测试连接并测试它是否抛出 SQLException。如果是,那么我需要重新建立连接。

就这么简单。 :)

关于java - 我们访问数据库有时间限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com