首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Base而不是DB使用Try-with-resources

对Base而不是DB使用Try-with-resources
EN

Stack Overflow用户
提问于 2019-04-21 02:03:11
回答 1查看 26关注 0票数 0

我喜欢使用try-with-resources来访问我的数据库,因为我的代码已经达到了复杂的程度,在线程之间移动时很难始终记住关闭数据库-我更喜欢使用try-with-resources。

我使用Base类,因为建议在只有一个数据库的情况下使用它。(http://javalite.io/database_connection_management,“DB和基类”标题)

我找到了描述它的文档,您可以简单地:

代码语言:javascript
复制
try(DB db = new DB()){
  db.open();
  // Wrong class, I should be using Base
}

然而,不幸的是,这只是DB类的情况,我不建议使用它。

在堆栈溢出回复here中,它说我可以写:

代码语言:javascript
复制
try(DB db = Base.open(...)){

  // Type error
}

然而,这会给出IDE错误“不兼容的类型。所需的数据库,找到连接”。如果我强制转换Base,这将导致"org.sqlite.SQLiteConnection cannot be cast to org.javalite.activejdbc.DB“

代码语言:javascript
复制
try(DB db = (DB) Base.open(...)){

  // ClassCastException, you can't cast Base to DB
}

我也试过将它作为一个连接,但是,当代码块完成时,它并没有关闭资源,所以我得到了错误“无法打开一个新的连接,因为现有的连接仍然在当前线程上,名称:默认”

代码语言:javascript
复制
try(Connection conn = Base.open(...)){

  // Doesn't close resource after completing code block
}

可以将try- with -resources与ActiveJDBC的基类一起使用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-22 00:17:08

在只有一个数据库连接的情况下,使用类DB绝对没有错。如果查看类Base的代码,就会发现它所做的一切就是使用硬编码的连接名称default调用类DB

建议在一个连接的情况下使用Base类只是为了方便起见。如果使用DB更方便,那么可以使用DB

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55776324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档