gpt4 book ai didi

java - 数据库是否会因为忙碌而忽略传入的请求?

转载 作者:行者123 更新时间:2023-12-04 06:36:13 25 4
gpt4 key购买 nike

在我的应用程序中,我实现了一种获取特定用户 Collection 夹的方法。如果用户是新用户,则表中将没有条目。如果是这样,我将默认 favourtis 添加到表中。代码如下所示。

 public String getUserFavourits(String username) {
String s = "SELECT FAVOURITS FROM USERFAVOURITS WHERE USERID='" +
username.trim() + "'";
String a = "";
Statement stm = null;
ResultSet reset = null;
DatabaseConnectionHandler handler = null;
Connection conn = null;
try {
handler = DatabaseConnectionHandler.getInstance();
conn = handler.getConnection();
stm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
reset = stm.executeQuery(s);
if (reset.next()) {
a = reset.getString("FAVOURITS").toString();
}
reset.close();
stm.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
try {
handler.returnConnectionToPool(conn);

if (stm != null) {
stm.close();
}
if (reset != null) {
reset.close();
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
if (a.equalsIgnoreCase("")) {
a = updateNewUserFav(username);
}
return a;
}

您可以看到,在 finally block 之后 updateNewUserFav(username) 方法用于将默认 Collection 夹插入到表中。通常,用户在首次登录时被迫更改此设置。
我的问题是许多用户提示我失去了他们的自定义 Collection 夹,并且默认值已加载到他们的登录中。当我浏览代码时,我注意到只有在 try block 中发生异常时才会发生这种情况。当我调试代码工作正常。这可以在数据库繁忙的时候引起吗?
系统中通常有超过 1000 个并发用户。由于它是实时应用程序,因此会有大量请求进入数据库(数据库是 Oracle)。

有人可以解释一下。

最佳答案

首先,使用 jonarles 关于绑定(bind)变量的建议。如果你的很多代码都是这样的,有 1000 个并发用户,我不想考虑性能是什么样的。

其次,如果它很忙,那么就有可能超时。正如你所说,如果遇到异常,那么它会回退到“updateNewUserFav”

真的,它应该只在没有引发异常的情况下调用它。
如果引发异常,该函数应该会失败。当前代码类似于

"TURN THE IGNITION KEY TO START THE CAR"
"IF THERE IS A PROBLEM, RING GARAGE AND BOOK APPOINTMENT"
"PUT CAR INTO GEAR AND RELEASE HAND_BRAKE"

您真的只想在汽车成功启动后松开手刹,否则您最终会滚下山,直到最后突然停止(通常涉及昂贵的 CRUNCH 声音)。

关于java - 数据库是否会因为忙碌而忽略传入的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4842594/

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