检查数据库连接状态

时间:2016-06-26 19:07:08

标签: c# visual-studio-2015

我使用C#
连接Firebird Database 我无法找到检查数据库ConnectionState的位置 如果我在项目中创建新的fbConnection,则可以通过fbConnection.ConnectionState进行检查 但我已经与向导建立了这个连接,它已保存在App.config文件中 我尝试使用System.Configuration.ConfigurationManager,但它没有ConnectionState

那么如何检查App.config文件中定义的连接状态。

2 个答案:

答案 0 :(得分:0)

似乎你不明白这个东西(连接)是如何工作的或它是什么。 ConfigurationManager类只是帮助您检索连接字符串(注意单词字符串。它只是一个字符串而已。)

使用此字符串,您可以构建FBConnection的真实实例并尝试打开该连接。现在您可以检查ConnectionState。

所以

 string connectionString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
 using(FbConnection myConnection = new FbConnection(connectionString))
 {
     // At this point the myConnection instance is certainly closed so
     // it is total useless to check the ConnectionState
     myConnection.Open();

     // At this point the myConnection instance is certainly opened,
     // otherwise you get an exception and your code cannot contine, 
     // so also here it is useless to check the ConnectionState 
     // however...
     if(myConnection.ConnectionState == ConnectionState.Open)
     {
         .... do your stuff with the connection.....
     }

 }

要使此代码正常工作,您需要在App.Config中找到相应的部分,用于存储以符号名称连接到数据库所需的详细信息" MyConnection"

<connectionStrings>
  <add name="MyConnection" connectionString="Data Source=localhost;
        Database=YourDatabaseFile.fdb;
        User=YourUserName;
        Password=????whatever???;
        Pooling=True" />
</connectionStrings>

所以我真的不需要检查连接的连接状态。如果此属性是您希望保留全局连接实例的唯一可能用途,则在尝试打开或关闭此全局实例之前,需要在代码的各个部分中检查ConnectionState。这种情况不是处理一次性对象的最佳方式,例如应该在尽可能短的时间内打开的连接,并且立即销毁(处置)并从使用块退出处理连接。

答案 1 :(得分:0)