System.Data.CommandBehavior 枚举说明


SqlDataReader   sdr = new SqlDataReader();
SqlCommand SCmd = new SqlCommand();

sdr =SCmd.ExecuteReader(CommandBehavior.CloseConnection);


其中对于CommandBehavior的说明如下:

 提供对查询结果和查询对数据库的影响的说明。

CommandBehavior是一个枚举。其成员和说明分别如下:

1、public static const System.Data.CommandBehavior CloseConnection
    System.Data.CommandBehavior 的成员

摘要:
 在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭。 

2、public static const System.Data.CommandBehavior Default
    System.Data.CommandBehavior 的成员

摘要:
 此查询可能返回多个结果集。执行查询可能会影响数据库状态。Default 不设置 System.Data.CommandBehavior 标志,因此调用 ExecuteReader(CommandBehavior.Default) 在功能上等效于调用 ExecuteReader()。 

3、public static const System.Data.CommandBehavior KeyInfo
    System.Data.CommandBehavior 的成员

摘要:
 此查询返回列和主键信息。执行此查询时不锁定选定的行。   当使用 KeyInfo 时,用于 SQL Server 的 .NET Framework 数据提供程序将 FOR BROWSE 子句追加到正在执行的语句。用户应该注意潜在的副作用,例如对 SET FMTONLY ON 语句的使用产生的干扰。有关更多信息,请参见“SQL Server 联机图书”。 

4、public static const System.Data.CommandBehavior SchemaOnly
    System.Data.CommandBehavior 的成员

摘要:
 此查询只返回列信息,而不影响数据库状态。 

5、public static const System.Data.CommandBehavior SequentialAccess
    System.Data.CommandBehavior 的成员

摘要:
 提供一种方法,以便 DataReader 处理包含带有大二进制值的列的行。SequentialAccess 不是加载整行,而是使 DataReader 将数据作为流来加载。然后可以使用 GetBytes 或 GetChars 方法来指定开始读取操作的字节位置以及正在返回的数据的有限的缓冲区大小。   当指定 SequentialAccess 时,尽管无需读取每个列,但是需要按照列的返回顺序读取它们。一旦已经读过返回的数据流中某个位置的内容,就不能再从 DataReader 中读取该位置或该位置之前的数据。当使用 System.Data.OleDb.OleDbDataReader 时,可重新读取当前列的值,直到读过它。当使用 System.Data.SqlClient.SqlDataReader 时,一次只能读取一个列值。 

6、public static const System.Data.CommandBehavior SingleResult
    System.Data.CommandBehavior 的成员

摘要:
 查询返回一个结果集。 

7、public static const System.Data.CommandBehavior SingleRow
    System.Data.CommandBehavior 的成员

摘要:
 查询应返回一行。执行查询可能会影响数据库状态。一些 .NET Framework 数据提供程序可能(但不要求)使用此信息来优化命令的性能。在用 System.Data.OleDb.OleDbCommand 对象的 System.Data.OleDb.OleDbCommand.ExecuteReader 方法指定 System.Data.CommandBehavior.SingleRow 时,用于 OLE DB 的 .NET Framework 数据提供程序使用 OLE DB IRow 接口(如果可用)执行绑定。否则,它使用 IRowset 接口。如果您的 SQL 语句应该只返回一行,则指定 System.Data.CommandBehavior.SingleRow 还可以提高应用程序性能。   在执行返回多个结果集的查询时,可以指定 SingleRow。在这种情况下,仍返回多个结果集,但每个结果集只有一行。 

而其枚举具体定义如下:

public enum CommandBehavior
Name: System.Data.CommandBehavior
Assembly: System.Data, Version=1.0.5000.0

[Flags]
public enum CommandBehavior
{
      // Fields
      CloseConnection = 0x20,
      Default = 0,
      KeyInfo = 4,
      SchemaOnly = 2,
      SequentialAccess = 0x10,
      SingleResult = 1,
      SingleRow = 8
}

原文地址:https://www.cnblogs.com/sxlfybb/p/181821.html