gpt4 book ai didi

Java - 在异常后请求的时间内无法获得锁

转载 作者:搜寻专家 更新时间:2023-10-30 23:42:53 24 4
gpt4 key购买 nike

事情是这样的:

  • 我有一个用作计分板的数据库;

  • 我有一个用新分数更新数据库的按钮;

  • 我有一个“开发人员异常”,当分数很低且无法替换记分板 (DB) 中的任何分数时抛出 SQLException;

问题:

  • 我得到一个低分并且发生了异常,然后我得到了一个高分并且没有更新数据库而是我得到了错误。

这里是错误:

  • “无法在请求的时间内获得锁”

这是按钮中的代码:

try
{
Connection conec=DriverManager.getConnection(hostname,username,password); //<-- Conecçao com a base de dados
Statement stm=conec.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); //<-- Conecção com as tabelas
//------------Aquisição dos dados------------------//
SQL="SELECT * FROM DEMOLION.MINER";
res=stm.executeQuery(SQL);
//-------------------------------------------------//
res.first();
nome=JOptionPane.showInputDialog("Introduza o mone que deseja registar:","Jogador1");
Desktop.getDesktop().open(new File("Jogos RPG Maker/Miner mapa/Game.exe"));
pontuacao=JOptionPane.showInputDialog("Introduza a pontuação obtida:","0");
pontos=Integer.parseInt(pontuacao);
do
{
pontos_insuf();
dbpontos=res.getInt("PONTUACOES");
System.out.println("pt="+pontos+"db="+dbpontos);
if(pontos>dbpontos)
{
res.updateInt("PONTUACOES",pontos);
res.updateString("NOME",nome);
res.updateRow();
}
if(pontos<dbpontos || pontos==dbpontos)
{
res.next();
}
}
while(pontos<dbpontos);
stm.close();
res.close();
}
catch (IOException ex)
{
Logger.getLogger(Jogos_Pacman.NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
catch(SQLException e)
{
MsgBox.show(e.getMessage(),"AVISO", JOptionPane.INFORMATION_MESSAGE);
}

这是开发者异常(exception):

private void pontos_insuf() throws SQLException{
if(!res.next())
{
throw new SQLException("Obteve uma pontuação insuficiente para superar pontuações anteriores!");
} }

最佳答案

您正在使用 CONCUR_UPDATABLE 创建您的语句,我猜您的数据库需要一个锁,但是当抛出错误时您没有释放锁,即您没有明确关闭语句。

最好的情况是您受 GC 的支配来收集 Statement 并释放锁,最坏的情况永远不会发生。

您需要做的是移动这些语句:

stm.close();
res.close();

进入 finally block ,这样它们无论如何都会发生

关于Java - 在异常后请求的时间内无法获得锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924455/

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