Java MySQL数据库查询与更新

Java MySQL数据库查询与更新,java,mysql,sql,Java,Mysql,Sql,我想知道是否有人知道更好的方法来做以下事情: 我需要查询一个数据库并返回一个值(在本例中为int),然后使用这个值,计算新值并用这个新值更新数据库 我目前的方法是使用一个方法从数据库中获取当前int值,将该值传递给另一个方法以执行计算,然后将新值传递给第三个方法以更新数据库 因此,这个问题(?)是,当从数据库获取初始值,然后更新它时,它会从池中打开一个新连接。很明显,它在方法的末尾关闭了连接,但是有更简单/更好的方法吗?看起来有点乱 您不必为每个查询打开新连接。只需在请求开始时打开一个连接,将其

我想知道是否有人知道更好的方法来做以下事情:

我需要查询一个数据库并返回一个值(在本例中为int),然后使用这个值,计算新值并用这个新值更新数据库

我目前的方法是使用一个方法从数据库中获取当前int值,将该值传递给另一个方法以执行计算,然后将新值传递给第三个方法以更新数据库


因此,这个问题(?)是,当从数据库获取初始值,然后更新它时,它会从池中打开一个新连接。很明显,它在方法的末尾关闭了连接,但是有更简单/更好的方法吗?看起来有点乱

您不必为每个查询打开新连接。只需在请求开始时打开一个连接,将其引用保存到可以在所有方法中使用的全局变量,然后在请求结束时关闭它。

尝试以下操作:

 SELECT fieldValue FROM table_name FOR UPDATE;
 UPDATE table_name SET fieldToUpdate = fieldValue + 1;

如果您可以使用SQL进行计算,请参见

UPDATE TableToUpdate
SET ColumnB = 
    Calculations( ( SELECT ColumnA
                    FROM TableToSelect
                    WHERE (conditions for selecting)
                  )
                )
WHERE (conditions for updating)

根据您的要求,您可以利用多表更新:

UPDATE TableToUpdate U JOIN TableToSelect S ON ( -- join condition for selection value to process )
SET U.ColumnB = Calculations( S.ColumnC )
WHERE U.ColumnC = -- whatever selection condition

他使用游泳池。如果我正确理解了这个问题,他没有使用同一个连接来选择值和更新,那么for update只有在他将逻辑更改为使用一个连接时才起作用,对吗?这也是一个选项。只是想确保Predz理解你的答案。@SérgioMichels,我同意你的看法,但OP提到他使用三种不同的方法,我的理解是因为他不知道更好的方法。我很迟钝,无法理解代码的标签。几分钟后我会再发一次。我想你错过了一个标签。你在服务器端使用Java?是的,我在使用Java服务器端。现在添加它thx@Predz这需要您创建自己的函数Calculations(),