何时打开和关闭数据库是值得推荐的?

4
我正在开发一个使用数据库的应用程序,但我不知道何时关闭它才是有用的?
是否推荐每次都关闭,还是应该保持打开状态直到应用程序关闭?
谢谢。

2
之前在这里回答过:http://stackoverflow.com/questions/7125755/activity-life-cycle-and-database,带来了这里的优秀文章:http://awiden.wordpress.com/2010/03/26/database-mangement-and-the-activity-lifecycle/。 - M.Bennett
8个回答

2

您可以考虑使用ContentProvider。它还可以轻松处理来自多个活动和片段的数据库和数据。同时,处理数据库连接也需要最小的努力。


我认为使用内容提供者(Content Providers)是正确的选择。我曾经制作过许多应用程序,在这些应用程序中服务(Service)和活动(Activity)同时连接到数据库(Database)。而使用内容提供者可以处理所有的连接,并确保在两个不同线程(Thread)同时访问数据库时,不存在与文件锁定相关的锁问题。 - Droid Chris

0
在主活动中执行以下操作:
public static DataBaseConect db=null; 


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        db=new DataBaseConect(this);}

@Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
         db.close();
    }

嗯,(y)...兄弟:将这段代码放在主活动中(启动应用程序的活动)... - user2639866
DataBaseConect是一个类,没问题。 - user2639866

0

当您的Activity被销毁时,请关闭数据库。

@Override
protected void onDestroy() {
    super.onDestroy();

//close db in here.

}

0

每次查询操作都打开和关闭连接是明智的做法...有时用户可能需要一些时间来发送请求,保持数据库连接长时间开放是不可取的。在Java中,您可以使用“Finally”块来调用连接关闭方法,在C中,您可以使用析构函数来调用连接关闭方法...或者在查询执行完成后显式地调用。


0

0

我不确定你的代码架构。 连接基本上是在DAO层打开的,关闭连接的代码应该在“finally”块中。


0

连接到数据库需要一定的时间。如果通过域套接字或命名管道连接,则可以忽略不计,但如果通过网络连接或更糟糕的是公开互联网连接,则可能要花费更长的时间。至少在请求的生命周期内保持连接。最后,您应该始终关闭它,有时当程序终止时会隐式完成,但保持检查是一个好习惯。


0
一般共识是使用完数据库连接后应该关闭它。 例如,在启动时仅使用一次连接后,您将在初始使用后关闭它。 您可能希望再次使用数据库连接,此时应将其保持打开状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接