我喜欢使用try-with-resources来访问我的数据库,因为我的代码已经达到了复杂的程度,在线程之间移动时很难始终记住关闭数据库-我更喜欢使用try-with-resources。
我使用Base类,因为建议在只有一个数据库的情况下使用它。(http://javalite.io/database_connection_management,“DB和基类”标题)
我找到了描述它的文档,您可以简单地:
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 cannot be cast to 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
}可以将try- with -resources与ActiveJDBC的基类一起使用吗?
发布于 2019-04-22 00:17:08
在只有一个数据库连接的情况下,使用类DB绝对没有错。如果查看类Base的代码,就会发现它所做的一切就是使用硬编码的连接名称default调用类DB。
建议在一个连接的情况下使用Base类只是为了方便起见。如果使用DB更方便,那么可以使用DB。
https://stackoverflow.com/questions/55776324
复制相似问题