小编Iva*_*van的帖子

.NET状态的数据库连接

手动管理数据库连接时,始终打开和关闭它.有时您需要在执行某些操作之前检查连接是否具有某种状态.经典情况是在关闭连接之前检查未关闭状态.就像是

if (connection.State != ConnectionState.Closed)
    connnection.Close();
Run Code Online (Sandbox Code Playgroud)

由于MSDN声明ConnectionState是枚举WITH FLAGS.这意味着连接状态可以同时具有不同的状态.可能会被打破+关闭或其他...

如果您反编译System.Data.ConnectionState枚举,您将看到

[Flags]
public enum ConnectionState
{
    Closed = 0,
    Open = 1,
    Connecting = 2,
    Executing = 4,
    Fetching = 8,
    Broken = 16,
}
Run Code Online (Sandbox Code Playgroud)

Closed项的值为ZERO.这意味着以下总是如此:

connection.State.HasFlag(ConnectionState.Closed)
Run Code Online (Sandbox Code Playgroud)

所以.有什么建议为什么这个枚举有Flags属性?或者(如果此枚举必须是Flags)为什么Closed项具有0值?

.net c# ado.net database-connection

5
推荐指数
1
解决办法
1066
查看次数

标签 统计

.net ×1

ado.net ×1

c# ×1

database-connection ×1