我想使用try-with-resources访问我的数据库,因为我的代码已经达到了一定的复杂度,在线程之间移动时很难总是记得关闭数据库-我宁愿使用try-with资源。
我使用Base类,因为在只有一个数据库的情况下建议使用此类。 (http://javalite.io/database_connection_management,“数据库和基类”标题)
我找到了可以简单描述的文档:
try(DB db = new DB()){
db.open();
// Wrong class, I should be using Base
}
但是,不幸的是,这仅是DB类的情况,不建议使用。
在堆栈溢出回复here中,我可以写:
try(DB db = Base.open(...)){
// Type error
}
但是,这会产生IDE错误“类型不兼容。所需的数据库,已找到连接”。如果我强制转换为Base,则导致“ org.sqlite.SQLiteConnection无法强制转换为org.javalite.activejdbc.DB”
try(DB db = (DB) Base.open(...)){
// ClassCastException, you can't cast Base to DB
}
我也尝试过将其保留为连接,但是,当代码块完成时,它不会关闭资源,因此我收到错误消息“由于现有连接仍在当前线程上,因此无法打开新连接,名称:默认”
try(Connection conn = Base.open(...)){
// Doesn't close resource after completing code block
}
是否可以在ActiveJDBC的基类中使用try-with-resources?
答案 0 :(得分:0)
在只有一个数据库连接的情况下,使用类DB
绝对没有错。如果查看类Base的代码,您会发现它所做的只是用硬编码的连接名DB
调用类default
。
在一个连接的情况下使用Base
类的建议只是为了方便。如果使用DB
更方便,请使用DB
。