本文整理汇总了C#中System.Data.Odbc.OdbcDataReader.IsBehavior方法的典型用法代码示例。如果您正苦于以下问题:C# OdbcDataReader.IsBehavior方法的具体用法?C# OdbcDataReader.IsBehavior怎么用?C# OdbcDataReader.IsBehavior使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Odbc.OdbcDataReader
的用法示例。
在下文中一共展示了OdbcDataReader.IsBehavior方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DbCache
//Constructor
internal DbCache(OdbcDataReader record, int count) {
_count = count;
_record = record;
_randomaccess = (!record.IsBehavior(CommandBehavior.SequentialAccess));
_values = new object[count];
_isBadValue = new bool[count];
}
示例2: ExecuteReaderObject
private OdbcDataReader ExecuteReaderObject(CommandBehavior behavior,
string method,
bool needReader,
object[] methodArguments,
ODBC32.SQL_API odbcApiMethod) { // MDAC 68324
OdbcDataReader localReader = null;
try {
DisposeDeadDataReader(); // this is a no-op if cmdState is not Fetching
ValidateConnectionAndTransaction(method); // cmdState will change to Executing
if(0 != (CommandBehavior.SingleRow & behavior)) {
// CommandBehavior.SingleRow implies CommandBehavior.SingleResult
behavior |= CommandBehavior.SingleResult;
}
ODBC32.RetCode retcode;
OdbcStatementHandle stmt = GetStatementHandle().StatementHandle;
_cmdWrapper.Canceling = false;
if(null != weakDataReaderReference) {
if(weakDataReaderReference.IsAlive) {
object target = weakDataReaderReference.Target;
if(null != target && weakDataReaderReference.IsAlive) {
if(!((OdbcDataReader)target).IsClosed) {
throw ADP.OpenReaderExists(); // MDAC 66411
}
}
}
}
localReader = new OdbcDataReader(this, _cmdWrapper, behavior);
//Set command properties
//Not all drivers support timeout. So fail silently if error
if(!Connection.ProviderInfo.NoQueryTimeout) {
TrySetStatementAttribute(stmt,
ODBC32.SQL_ATTR.QUERY_TIMEOUT,
(IntPtr)this.CommandTimeout);
}
// todo: If we remember the state we can omit a lot of SQLSetStmtAttrW calls ...
// if we do not create a reader we do not even need to do that
if(needReader) {
if(Connection.IsV3Driver) {
if(!Connection.ProviderInfo.NoSqlSoptSSNoBrowseTable && !Connection.ProviderInfo.NoSqlSoptSSHiddenColumns) {
// Need to get the metadata information
//SQLServer actually requires browse info turned on ahead of time...
//Note: We ignore any failures, since this is SQLServer specific
//We won't specialcase for SQL Server but at least for non-V3 drivers
if(localReader.IsBehavior(CommandBehavior.KeyInfo)) {
if(!_cmdWrapper._ssKeyInfoModeOn) {
TrySetStatementAttribute(stmt, (ODBC32.SQL_ATTR)ODBC32.SQL_SOPT_SS.NOBROWSETABLE, (IntPtr)ODBC32.SQL_NB.ON);
TrySetStatementAttribute(stmt, (ODBC32.SQL_ATTR)ODBC32.SQL_SOPT_SS.HIDDEN_COLUMNS, (IntPtr)ODBC32.SQL_HC.ON);
_cmdWrapper._ssKeyInfoModeOff = false;
_cmdWrapper._ssKeyInfoModeOn = true;
}
}
else {
if(!_cmdWrapper._ssKeyInfoModeOff) {
TrySetStatementAttribute(stmt, (ODBC32.SQL_ATTR)ODBC32.SQL_SOPT_SS.NOBROWSETABLE, (IntPtr)ODBC32.SQL_NB.OFF);
TrySetStatementAttribute(stmt, (ODBC32.SQL_ATTR)ODBC32.SQL_SOPT_SS.HIDDEN_COLUMNS, (IntPtr)ODBC32.SQL_HC.OFF);
_cmdWrapper._ssKeyInfoModeOff = true;
_cmdWrapper._ssKeyInfoModeOn = false;
}
}
}
}
}
if(localReader.IsBehavior(CommandBehavior.KeyInfo) ||
localReader.IsBehavior(CommandBehavior.SchemaOnly)) {
retcode = stmt.Prepare(CommandText);
if(ODBC32.RetCode.SUCCESS != retcode) {
_connection.HandleError(stmt, retcode);
}
}
bool mustRelease = false;
CNativeBuffer parameterBuffer = _cmdWrapper._nativeParameterBuffer;
RuntimeHelpers.PrepareConstrainedRegions();
try {
//Handle Parameters
//Note: We use the internal variable as to not instante a new object collection,
//for the the common case of using no parameters.
if((null != _parameterCollection) && (0 < _parameterCollection.Count)) {
int parameterBufferSize = _parameterCollection.CalcParameterBufferSize(this);
if(null == parameterBuffer || parameterBuffer.Length < parameterBufferSize) {
if (null != parameterBuffer) {
parameterBuffer.Dispose();
}
parameterBuffer = new CNativeBuffer(parameterBufferSize);
_cmdWrapper._nativeParameterBuffer = parameterBuffer;
}
else {
//.........这里部分代码省略.........
示例3: ExecuteReaderObject
private OdbcDataReader ExecuteReaderObject(CommandBehavior behavior, string method, bool needReader, object[] methodArguments, ODBC32.SQL_API odbcApiMethod)
{
OdbcDataReader target = null;
try
{
ODBC32.RetCode typeInfo;
this.DisposeDeadDataReader();
this.ValidateConnectionAndTransaction(method);
if ((CommandBehavior.SingleRow & behavior) != CommandBehavior.Default)
{
behavior |= CommandBehavior.SingleResult;
}
OdbcStatementHandle statementHandle = this.GetStatementHandle().StatementHandle;
this._cmdWrapper.Canceling = false;
if ((this.weakDataReaderReference != null) && this.weakDataReaderReference.IsAlive)
{
object obj2 = this.weakDataReaderReference.Target;
if (((obj2 != null) && this.weakDataReaderReference.IsAlive) && !((OdbcDataReader) obj2).IsClosed)
{
throw ADP.OpenReaderExists();
}
}
target = new OdbcDataReader(this, this._cmdWrapper, behavior);
if (!this.Connection.ProviderInfo.NoQueryTimeout)
{
this.TrySetStatementAttribute(statementHandle, ODBC32.SQL_ATTR.QUERY_TIMEOUT, (IntPtr) this.CommandTimeout);
}
if ((needReader && this.Connection.IsV3Driver) && (!this.Connection.ProviderInfo.NoSqlSoptSSNoBrowseTable && !this.Connection.ProviderInfo.NoSqlSoptSSHiddenColumns))
{
if (target.IsBehavior(CommandBehavior.KeyInfo))
{
if (!this._cmdWrapper._ssKeyInfoModeOn)
{
this.TrySetStatementAttribute(statementHandle, (ODBC32.SQL_ATTR) 0x4cc, (IntPtr) 1L);
this.TrySetStatementAttribute(statementHandle, ODBC32.SQL_ATTR.SQL_COPT_SS_TXN_ISOLATION, (IntPtr) 1L);
this._cmdWrapper._ssKeyInfoModeOff = false;
this._cmdWrapper._ssKeyInfoModeOn = true;
}
}
else if (!this._cmdWrapper._ssKeyInfoModeOff)
{
this.TrySetStatementAttribute(statementHandle, (ODBC32.SQL_ATTR) 0x4cc, (IntPtr) 0L);
this.TrySetStatementAttribute(statementHandle, ODBC32.SQL_ATTR.SQL_COPT_SS_TXN_ISOLATION, (IntPtr) 0L);
this._cmdWrapper._ssKeyInfoModeOff = true;
this._cmdWrapper._ssKeyInfoModeOn = false;
}
}
if (target.IsBehavior(CommandBehavior.KeyInfo) || target.IsBehavior(CommandBehavior.SchemaOnly))
{
typeInfo = statementHandle.Prepare(this.CommandText);
if (typeInfo != ODBC32.RetCode.SUCCESS)
{
this._connection.HandleError(statementHandle, typeInfo);
}
}
bool success = false;
CNativeBuffer parameterBuffer = this._cmdWrapper._nativeParameterBuffer;
RuntimeHelpers.PrepareConstrainedRegions();
try
{
if ((this._parameterCollection != null) && (0 < this._parameterCollection.Count))
{
int initialSize = this._parameterCollection.CalcParameterBufferSize(this);
if ((parameterBuffer == null) || (parameterBuffer.Length < initialSize))
{
if (parameterBuffer != null)
{
parameterBuffer.Dispose();
}
parameterBuffer = new CNativeBuffer(initialSize);
this._cmdWrapper._nativeParameterBuffer = parameterBuffer;
}
else
{
parameterBuffer.ZeroMemory();
}
parameterBuffer.DangerousAddRef(ref success);
this._parameterCollection.Bind(this, this._cmdWrapper, parameterBuffer);
}
if (target.IsBehavior(CommandBehavior.SchemaOnly))
{
goto Label_0443;
}
if ((target.IsBehavior(CommandBehavior.KeyInfo) || target.IsBehavior(CommandBehavior.SchemaOnly)) && (this.CommandType != System.Data.CommandType.StoredProcedure))
{
short num2;
typeInfo = statementHandle.NumberOfResultColumns(out num2);
switch (typeInfo)
{
case ODBC32.RetCode.SUCCESS:
case ODBC32.RetCode.SUCCESS_WITH_INFO:
if (num2 > 0)
{
target.GetSchemaTable();
}
goto Label_029A;
}
if (typeInfo != ODBC32.RetCode.NO_DATA)
{
this._connection.HandleError(statementHandle, typeInfo);
//.........这里部分代码省略.........