我应该关闭作为参数传递的准备好的语句吗?

Should I close the prepared statement passed as parameter?

我知道我们不应该在 java 中重用准备好的语句或使用 try-with-resource。但是我应该如何处理作为参数传递的准备好的语句呢?我也应该关闭它吗?

例如:

private void somemethod(PreparedStatement pStmt1, PreparedStatement pStmt2 ) 
{
    int nCount = 0;
    try
    {
        pStmt1.setString (1,"something");
        pStmt1.setInt(2, 1);
        nCount = pStmt1.executeUpdate();
        pStmt1.clearParameters();
        
        if (nCount == 0)
        {
            pStmt2.setInt(1, 1);
            pStmt2.setString(2, "something");
            
            pStmt2.executeUpdate();
            pStmt2.clearParameters();
        }
        
    }
    catch (Exception ex)
    {
        LOGGER.log(e);
    }   
    finally {
    //here should I close these parameters of prepared statements? 
    //Even though I do not close them the sonar is not giving blocker to close them. 
    //So I am curious to know the reality. Please help. Thank you
         pStmt1.close();                
         pStmt2.close();                
    }
    
 }

我的看法是这样的:

在您的代码中,somemethod 不是传递给它的那些准备好的语句的所有者。它没有创建它们,因此它不应该对其生命周期负责(比如关闭它们)。

创建它们的代码也应该负责关闭它们。 somemethod只是“租借”了那些准备好的声明,应该尊重他们。