有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Try with Resources中使用PreparedStatement显示“未知类”错误

我正在全局初始化一个preparedstatement(因此,它不是每次运行函数时都进行预编译,只有在加载应用程序时才进行),并试图使用preparedstatement尝试使用资源,但它显示了一个“未知类”错误。代码如下:

private PreparedStatement ingredientDelete;

public void deleteIngredient(String name) {
    try(ingredientDelete = con.prepareStatement(DELETE_INGREDIENT_BY_NAME)){
        ingredientDelete.setString(1, name);
        ingredientDelete.execute();

    }catch(SQLException e){
        System.out.println("Delete failed - " + e.getMessage());

    }
}

为了清楚起见,连接是在另一个方法中打开的,并且也是全局声明的


共 (1) 个答案

  1. # 1 楼答案

    这不是有效的Java。try中声明的resourced必须是局部变量,因此必须声明其类型。见the JLS

    Resource:
        VariableModifiersopt Type VariableDeclaratorId = Expression
    

    将其设为字段无论如何都没有意义,因为语句绑定到连接,并且每次调用该方法时都要创建它,因此可能在多个线程中使用同一语句

    你在预先优化,这是所有邪恶的根源。数据库已经有一个已准备语句的缓存。没必要自己做那件事。你也应该使用一个连接池,而不是为你的所有程序使用一个连接