Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / SqlClient / TdsParserHelperClasses.cs / 1 / TdsParserHelperClasses.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.ProviderBase; using System.Data.Sql; using System.Data.SqlTypes; using System.Diagnostics; using System.Reflection; using System.Text; using System.Threading; using Microsoft.SqlServer.Server; // for SMI metadata internal enum CallbackType { Read = 0, Write = 1 } internal enum EncryptionOptions { OFF, ON, NOT_SUP, REQ, LOGIN } internal enum PreLoginHandshakeStatus { Successful, SphinxFailure, InstanceFailure } internal enum PreLoginOptions { VERSION, ENCRYPT, INSTANCE, THREADID, MARS, NUMOPT, LASTOPT = 255 } internal enum RunBehavior { UntilDone = 1, // 0001 binary ReturnImmediately = 2, // 0010 binary Clean = 5, // 0101 binary - Clean AND UntilDone Attention = 13 // 1101 binary - Clean AND UntilDone AND Attention } internal enum TdsParserState { Closed, OpenNotLoggedIn, OpenLoggedIn, Broken, } sealed internal class SqlCollation { // First 20 bits of info field represent the lcid, bits 21-25 are compare options private const uint IgnoreCase = 1 << 20; // bit 21 - IgnoreCase private const uint IgnoreNonSpace = 1 << 21; // bit 22 - IgnoreNonSpace / IgnoreAccent private const uint IgnoreWidth = 1 << 22; // bit 23 - IgnoreWidth private const uint IgnoreKanaType = 1 << 23; // bit 24 - IgnoreKanaType private const uint BinarySort = 1 << 24; // bit 25 - BinarySort internal const uint MaskLcid = 0xfffff; private const uint MaskCompareOpt = IgnoreCase|IgnoreNonSpace|IgnoreWidth|IgnoreKanaType|BinarySort; internal uint info; internal byte sortId; internal int LCID { // First 20 bits of info field represent the lcid get { return unchecked((int)(info & MaskLcid)); } set { Debug.Assert((value & MaskLcid) == value, "invalid set_LCID value"); info = ((info & MaskCompareOpt) | (unchecked((uint)value) & MaskLcid)); } } internal SqlCompareOptions SqlCompareOptions { get { SqlCompareOptions options = SqlCompareOptions.None; if (0 != (info & IgnoreCase)) options |= SqlCompareOptions.IgnoreCase; if (0 != (info & IgnoreNonSpace)) options |= SqlCompareOptions.IgnoreNonSpace; if (0 != (info & IgnoreWidth)) options |= SqlCompareOptions.IgnoreWidth; if (0 != (info & IgnoreKanaType)) options |= SqlCompareOptions.IgnoreKanaType; if (0 != (info & BinarySort)) options |= SqlCompareOptions.BinarySort; return options; } set { Debug.Assert((value & SqlString.x_iValidSqlCompareOptionMask) == value, "invalid set_SqlCompareOptions value"); uint tmp = 0; if (0 != (value & SqlCompareOptions.IgnoreCase)) tmp |= IgnoreCase; if (0 != (value & SqlCompareOptions.IgnoreNonSpace)) tmp |= IgnoreNonSpace; if (0 != (value & SqlCompareOptions.IgnoreWidth)) tmp |= IgnoreWidth; if (0 != (value & SqlCompareOptions.IgnoreKanaType)) tmp |= IgnoreKanaType; if (0 != (value & SqlCompareOptions.BinarySort)) tmp |= BinarySort; info = (info & MaskLcid) | tmp; } } internal string TraceString() { return String.Format(/*IFormatProvider*/ null, "(LCID={0}, Opts={1})", this.LCID, (int)this.SqlCompareOptions); } } sealed internal class SqlEnvChange { internal byte type; internal byte oldLength; internal int newLength; // 7206 TDS changes makes this length an int internal int length; internal string newValue; internal string oldValue; internal byte[] newBinValue; internal byte[] oldBinValue; internal long newLongValue; internal long oldLongValue; internal SqlCollation newCollation; internal SqlCollation oldCollation; } sealed internal class SqlLogin { internal int timeout; // login timeout internal bool userInstance = false; // user instance internal string hostName = ""; // client machine name internal string userName = ""; // user id internal string password = ""; // password internal string applicationName = ""; // application name internal string serverName = ""; // server name internal string language = ""; // initial language internal string database = ""; // initial database internal string attachDBFilename = ""; // DB filename to be attached internal string newPassword = ""; // new password for reset password internal bool useReplication = false; // user login for replication internal bool useSSPI = false; // use integrated security internal int packetSize = SqlConnectionString.DEFAULT.Packet_Size; // packet size } sealed internal class SqlLoginAck { internal string programName; internal byte majorVersion; internal byte minorVersion; internal short buildNum; internal bool isVersion8; } sealed internal class _SqlMetaData : SqlMetaDataPriv { internal string column; internal string baseColumn; internal MultiPartTableName multiPartTableName; internal readonly int ordinal; internal byte updatability; // two bit field (0 is read only, 1 is updatable, 2 is updatability unknown) internal byte tableNum; internal bool isDifferentName; internal bool isKey; internal bool isHidden; internal bool isExpression; internal bool isIdentity; internal bool isColumnSet; internal byte op; // for altrow-columns only internal ushort operand; // for altrow-columns only internal _SqlMetaData(int ordinal) : base() { this.ordinal = ordinal; } internal string serverName { get { return multiPartTableName.ServerName; } } internal string catalogName { get { return multiPartTableName.CatalogName; } } internal string schemaName { get { return multiPartTableName.SchemaName; } } internal string tableName { get { return multiPartTableName.TableName; } } internal bool IsNewKatmaiDateTimeType { get { return SqlDbType.Date == type || SqlDbType.Time == type || SqlDbType.DateTime2 == type || SqlDbType.DateTimeOffset == type; } } internal bool IsLargeUdt { get { return type == SqlDbType.Udt && length == Int32.MaxValue; } } } sealed internal class _SqlMetaDataSet { internal ushort id; // for altrow-columns only internal int[] indexMap; internal int visibleColumns; internal DataTable schemaTable; private readonly _SqlMetaData[] metaDataArray; internal _SqlMetaDataSet(int count) { metaDataArray = new _SqlMetaData[count]; for(int i = 0; i < metaDataArray.Length; ++i) { metaDataArray[i] = new _SqlMetaData(i); } } internal int Length { get { return metaDataArray.Length; } } internal _SqlMetaData this [int index] { get { return metaDataArray[index]; } set { Debug.Assert(null == value, "used only by SqlBulkCopy"); metaDataArray[index] = value; } } } sealed internal class _SqlMetaDataSetCollection { private readonly List<_SqlMetaDataSet> altMetaDataSetArray; internal _SqlMetaDataSet metaDataSet; internal _SqlMetaDataSetCollection () { altMetaDataSetArray = new List<_SqlMetaDataSet>(); } internal void Add(_SqlMetaDataSet altMetaDataSet) { altMetaDataSetArray.Add(altMetaDataSet); } internal _SqlMetaDataSet this[int id] { get { foreach (_SqlMetaDataSet altMetaDataSet in altMetaDataSetArray) { if (altMetaDataSet.id == id) { return altMetaDataSet; } } Debug.Assert (false, "Can't match up altMetaDataSet with given id"); return null; } } } internal class SqlMetaDataPriv { internal SqlDbType type; // SqlDbType enum value internal byte tdsType; // underlying tds type internal byte precision = TdsEnums.UNKNOWN_PRECISION_SCALE; // give default of unknown (-1) internal byte scale = TdsEnums.UNKNOWN_PRECISION_SCALE; // give default of unknown (-1) internal int length; internal SqlCollation collation; internal int codePage; internal Encoding encoding; internal bool isNullable; internal bool isMultiValued = false; // UDT specific metadata // server metadata info // additional temporary UDT meta data internal string udtDatabaseName; internal string udtSchemaName; internal string udtTypeName; internal string udtAssemblyQualifiedName; // on demand internal Type udtType; // Xml specific metadata internal string xmlSchemaCollectionDatabase; internal string xmlSchemaCollectionOwningSchema; internal string xmlSchemaCollectionName; internal MetaType metaType; // cached metaType // Structured type-specific metadata internal string structuredTypeDatabaseName; internal string structuredTypeSchemaName; internal string structuredTypeName; internal IListstructuredFields; internal SqlMetaDataPriv() { } } sealed internal class _SqlRPC { internal string rpcName; internal string databaseName; // Used for UDTs internal ushort ProcID; // Used instead of name internal ushort options; internal SqlParameter[] parameters; internal byte[] paramoptions; internal int? recordsAffected; internal int cumulativeRecordsAffected; internal int errorsIndexStart; internal int errorsIndexEnd; internal SqlErrorCollection errors; internal int warningsIndexStart; internal int warningsIndexEnd; internal SqlErrorCollection warnings; } sealed internal class SqlReturnValue : SqlMetaDataPriv { internal ushort parmIndex; //Yukon or later only internal string parameter; internal readonly SqlBuffer value; internal SqlReturnValue() : base() { value = new SqlBuffer(); } } internal struct MultiPartTableName { private string _multipartName; private string _serverName; private string _catalogName; private string _schemaName; private string _tableName; internal MultiPartTableName(string[] parts) { _multipartName = null; _serverName = parts[0]; _catalogName = parts[1]; _schemaName = parts[2]; _tableName = parts[3]; } internal MultiPartTableName(string multipartName) { _multipartName = multipartName; _serverName = null; _catalogName = null; _schemaName = null; _tableName = null; } internal string ServerName { get { ParseMultipartName(); return _serverName; } set { _serverName = value; } } internal string CatalogName { get { ParseMultipartName(); return _catalogName; } set { _catalogName = value; } } internal string SchemaName { get { ParseMultipartName(); return _schemaName; } set { _schemaName = value; } } internal string TableName { get { ParseMultipartName(); return _tableName; } set { _tableName = value; } } private void ParseMultipartName() { if (null != _multipartName) { string[] parts = MultipartIdentifier.ParseMultipartIdentifier(_multipartName, "[\"", "]\"", Res.SQL_TDSParserTableName, false); _serverName = parts[0]; _catalogName = parts[1]; _schemaName = parts[2]; _tableName = parts[3]; _multipartName = null; } } internal static readonly MultiPartTableName Null = new MultiPartTableName(new string[] {null, null, null, null}); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.ProviderBase; using System.Data.Sql; using System.Data.SqlTypes; using System.Diagnostics; using System.Reflection; using System.Text; using System.Threading; using Microsoft.SqlServer.Server; // for SMI metadata internal enum CallbackType { Read = 0, Write = 1 } internal enum EncryptionOptions { OFF, ON, NOT_SUP, REQ, LOGIN } internal enum PreLoginHandshakeStatus { Successful, SphinxFailure, InstanceFailure } internal enum PreLoginOptions { VERSION, ENCRYPT, INSTANCE, THREADID, MARS, NUMOPT, LASTOPT = 255 } internal enum RunBehavior { UntilDone = 1, // 0001 binary ReturnImmediately = 2, // 0010 binary Clean = 5, // 0101 binary - Clean AND UntilDone Attention = 13 // 1101 binary - Clean AND UntilDone AND Attention } internal enum TdsParserState { Closed, OpenNotLoggedIn, OpenLoggedIn, Broken, } sealed internal class SqlCollation { // First 20 bits of info field represent the lcid, bits 21-25 are compare options private const uint IgnoreCase = 1 << 20; // bit 21 - IgnoreCase private const uint IgnoreNonSpace = 1 << 21; // bit 22 - IgnoreNonSpace / IgnoreAccent private const uint IgnoreWidth = 1 << 22; // bit 23 - IgnoreWidth private const uint IgnoreKanaType = 1 << 23; // bit 24 - IgnoreKanaType private const uint BinarySort = 1 << 24; // bit 25 - BinarySort internal const uint MaskLcid = 0xfffff; private const uint MaskCompareOpt = IgnoreCase|IgnoreNonSpace|IgnoreWidth|IgnoreKanaType|BinarySort; internal uint info; internal byte sortId; internal int LCID { // First 20 bits of info field represent the lcid get { return unchecked((int)(info & MaskLcid)); } set { Debug.Assert((value & MaskLcid) == value, "invalid set_LCID value"); info = ((info & MaskCompareOpt) | (unchecked((uint)value) & MaskLcid)); } } internal SqlCompareOptions SqlCompareOptions { get { SqlCompareOptions options = SqlCompareOptions.None; if (0 != (info & IgnoreCase)) options |= SqlCompareOptions.IgnoreCase; if (0 != (info & IgnoreNonSpace)) options |= SqlCompareOptions.IgnoreNonSpace; if (0 != (info & IgnoreWidth)) options |= SqlCompareOptions.IgnoreWidth; if (0 != (info & IgnoreKanaType)) options |= SqlCompareOptions.IgnoreKanaType; if (0 != (info & BinarySort)) options |= SqlCompareOptions.BinarySort; return options; } set { Debug.Assert((value & SqlString.x_iValidSqlCompareOptionMask) == value, "invalid set_SqlCompareOptions value"); uint tmp = 0; if (0 != (value & SqlCompareOptions.IgnoreCase)) tmp |= IgnoreCase; if (0 != (value & SqlCompareOptions.IgnoreNonSpace)) tmp |= IgnoreNonSpace; if (0 != (value & SqlCompareOptions.IgnoreWidth)) tmp |= IgnoreWidth; if (0 != (value & SqlCompareOptions.IgnoreKanaType)) tmp |= IgnoreKanaType; if (0 != (value & SqlCompareOptions.BinarySort)) tmp |= BinarySort; info = (info & MaskLcid) | tmp; } } internal string TraceString() { return String.Format(/*IFormatProvider*/ null, "(LCID={0}, Opts={1})", this.LCID, (int)this.SqlCompareOptions); } } sealed internal class SqlEnvChange { internal byte type; internal byte oldLength; internal int newLength; // 7206 TDS changes makes this length an int internal int length; internal string newValue; internal string oldValue; internal byte[] newBinValue; internal byte[] oldBinValue; internal long newLongValue; internal long oldLongValue; internal SqlCollation newCollation; internal SqlCollation oldCollation; } sealed internal class SqlLogin { internal int timeout; // login timeout internal bool userInstance = false; // user instance internal string hostName = ""; // client machine name internal string userName = ""; // user id internal string password = ""; // password internal string applicationName = ""; // application name internal string serverName = ""; // server name internal string language = ""; // initial language internal string database = ""; // initial database internal string attachDBFilename = ""; // DB filename to be attached internal string newPassword = ""; // new password for reset password internal bool useReplication = false; // user login for replication internal bool useSSPI = false; // use integrated security internal int packetSize = SqlConnectionString.DEFAULT.Packet_Size; // packet size } sealed internal class SqlLoginAck { internal string programName; internal byte majorVersion; internal byte minorVersion; internal short buildNum; internal bool isVersion8; } sealed internal class _SqlMetaData : SqlMetaDataPriv { internal string column; internal string baseColumn; internal MultiPartTableName multiPartTableName; internal readonly int ordinal; internal byte updatability; // two bit field (0 is read only, 1 is updatable, 2 is updatability unknown) internal byte tableNum; internal bool isDifferentName; internal bool isKey; internal bool isHidden; internal bool isExpression; internal bool isIdentity; internal bool isColumnSet; internal byte op; // for altrow-columns only internal ushort operand; // for altrow-columns only internal _SqlMetaData(int ordinal) : base() { this.ordinal = ordinal; } internal string serverName { get { return multiPartTableName.ServerName; } } internal string catalogName { get { return multiPartTableName.CatalogName; } } internal string schemaName { get { return multiPartTableName.SchemaName; } } internal string tableName { get { return multiPartTableName.TableName; } } internal bool IsNewKatmaiDateTimeType { get { return SqlDbType.Date == type || SqlDbType.Time == type || SqlDbType.DateTime2 == type || SqlDbType.DateTimeOffset == type; } } internal bool IsLargeUdt { get { return type == SqlDbType.Udt && length == Int32.MaxValue; } } } sealed internal class _SqlMetaDataSet { internal ushort id; // for altrow-columns only internal int[] indexMap; internal int visibleColumns; internal DataTable schemaTable; private readonly _SqlMetaData[] metaDataArray; internal _SqlMetaDataSet(int count) { metaDataArray = new _SqlMetaData[count]; for(int i = 0; i < metaDataArray.Length; ++i) { metaDataArray[i] = new _SqlMetaData(i); } } internal int Length { get { return metaDataArray.Length; } } internal _SqlMetaData this [int index] { get { return metaDataArray[index]; } set { Debug.Assert(null == value, "used only by SqlBulkCopy"); metaDataArray[index] = value; } } } sealed internal class _SqlMetaDataSetCollection { private readonly List<_SqlMetaDataSet> altMetaDataSetArray; internal _SqlMetaDataSet metaDataSet; internal _SqlMetaDataSetCollection () { altMetaDataSetArray = new List<_SqlMetaDataSet>(); } internal void Add(_SqlMetaDataSet altMetaDataSet) { altMetaDataSetArray.Add(altMetaDataSet); } internal _SqlMetaDataSet this[int id] { get { foreach (_SqlMetaDataSet altMetaDataSet in altMetaDataSetArray) { if (altMetaDataSet.id == id) { return altMetaDataSet; } } Debug.Assert (false, "Can't match up altMetaDataSet with given id"); return null; } } } internal class SqlMetaDataPriv { internal SqlDbType type; // SqlDbType enum value internal byte tdsType; // underlying tds type internal byte precision = TdsEnums.UNKNOWN_PRECISION_SCALE; // give default of unknown (-1) internal byte scale = TdsEnums.UNKNOWN_PRECISION_SCALE; // give default of unknown (-1) internal int length; internal SqlCollation collation; internal int codePage; internal Encoding encoding; internal bool isNullable; internal bool isMultiValued = false; // UDT specific metadata // server metadata info // additional temporary UDT meta data internal string udtDatabaseName; internal string udtSchemaName; internal string udtTypeName; internal string udtAssemblyQualifiedName; // on demand internal Type udtType; // Xml specific metadata internal string xmlSchemaCollectionDatabase; internal string xmlSchemaCollectionOwningSchema; internal string xmlSchemaCollectionName; internal MetaType metaType; // cached metaType // Structured type-specific metadata internal string structuredTypeDatabaseName; internal string structuredTypeSchemaName; internal string structuredTypeName; internal IListstructuredFields; internal SqlMetaDataPriv() { } } sealed internal class _SqlRPC { internal string rpcName; internal string databaseName; // Used for UDTs internal ushort ProcID; // Used instead of name internal ushort options; internal SqlParameter[] parameters; internal byte[] paramoptions; internal int? recordsAffected; internal int cumulativeRecordsAffected; internal int errorsIndexStart; internal int errorsIndexEnd; internal SqlErrorCollection errors; internal int warningsIndexStart; internal int warningsIndexEnd; internal SqlErrorCollection warnings; } sealed internal class SqlReturnValue : SqlMetaDataPriv { internal ushort parmIndex; //Yukon or later only internal string parameter; internal readonly SqlBuffer value; internal SqlReturnValue() : base() { value = new SqlBuffer(); } } internal struct MultiPartTableName { private string _multipartName; private string _serverName; private string _catalogName; private string _schemaName; private string _tableName; internal MultiPartTableName(string[] parts) { _multipartName = null; _serverName = parts[0]; _catalogName = parts[1]; _schemaName = parts[2]; _tableName = parts[3]; } internal MultiPartTableName(string multipartName) { _multipartName = multipartName; _serverName = null; _catalogName = null; _schemaName = null; _tableName = null; } internal string ServerName { get { ParseMultipartName(); return _serverName; } set { _serverName = value; } } internal string CatalogName { get { ParseMultipartName(); return _catalogName; } set { _catalogName = value; } } internal string SchemaName { get { ParseMultipartName(); return _schemaName; } set { _schemaName = value; } } internal string TableName { get { ParseMultipartName(); return _tableName; } set { _tableName = value; } } private void ParseMultipartName() { if (null != _multipartName) { string[] parts = MultipartIdentifier.ParseMultipartIdentifier(_multipartName, "[\"", "]\"", Res.SQL_TDSParserTableName, false); _serverName = parts[0]; _catalogName = parts[1]; _schemaName = parts[2]; _tableName = parts[3]; _multipartName = null; } } internal static readonly MultiPartTableName Null = new MultiPartTableName(new string[] {null, null, null, null}); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CompensationDesigner.cs
- TypedElement.cs
- DragAssistanceManager.cs
- ISessionStateStore.cs
- ToolStrip.cs
- ClientScriptManagerWrapper.cs
- PreservationFileReader.cs
- UrlPropertyAttribute.cs
- PowerModeChangedEventArgs.cs
- InvalidateEvent.cs
- SynchronousSendBindingElement.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- XmlSchemaDatatype.cs
- GridViewColumnCollection.cs
- NavigatorInput.cs
- ServerIdentity.cs
- CapabilitiesSection.cs
- XmlNodeList.cs
- WinEventTracker.cs
- ElementMarkupObject.cs
- OneOfScalarConst.cs
- DataSourceView.cs
- RequestCachePolicy.cs
- TransactionState.cs
- DbCommandTree.cs
- ToolBarOverflowPanel.cs
- ProcessStartInfo.cs
- DictionarySectionHandler.cs
- CustomErrorsSectionWrapper.cs
- Win32Exception.cs
- GacUtil.cs
- TypeListConverter.cs
- CardSpacePolicyElement.cs
- TypeDelegator.cs
- WebPartManager.cs
- SimpleTextLine.cs
- TimeSpanConverter.cs
- BulletedList.cs
- DuplicateWaitObjectException.cs
- TypefaceCollection.cs
- ControlIdConverter.cs
- SortDescriptionCollection.cs
- IdentifierService.cs
- DesignerAutoFormatStyle.cs
- DefaultEventAttribute.cs
- MethodRental.cs
- EdgeModeValidation.cs
- XmlBaseWriter.cs
- IIS7UserPrincipal.cs
- GlyphCache.cs
- CodeIterationStatement.cs
- GridLengthConverter.cs
- Image.cs
- DeflateEmulationStream.cs
- DebugView.cs
- DockingAttribute.cs
- BindToObject.cs
- EmbeddedObject.cs
- TimerElapsedEvenArgs.cs
- RuleDefinitions.cs
- MessageSecurityOverMsmq.cs
- ToolStripDropDownMenu.cs
- nulltextcontainer.cs
- BrowserDefinitionCollection.cs
- EventLogPermissionAttribute.cs
- XPathDocument.cs
- TransformedBitmap.cs
- DiscoveryClientOutputChannel.cs
- ActivatableWorkflowsQueryResult.cs
- DbProviderFactoriesConfigurationHandler.cs
- Debugger.cs
- recordstatefactory.cs
- SoapEnumAttribute.cs
- PropertyValueEditor.cs
- EventHandlersStore.cs
- StylusButton.cs
- _SslState.cs
- EUCJPEncoding.cs
- CompensatableTransactionScopeActivityDesigner.cs
- objectquery_tresulttype.cs
- HtmlInputControl.cs
- WmlTextBoxAdapter.cs
- HScrollProperties.cs
- TrackingProfile.cs
- ContentControl.cs
- Int64Animation.cs
- EntityDataSourceEntityTypeFilterItem.cs
- DesignerOptionService.cs
- SigningCredentials.cs
- LineGeometry.cs
- TypeBuilder.cs
- UnsafeNetInfoNativeMethods.cs
- Propagator.cs
- MapPathBasedVirtualPathProvider.cs
- RowToFieldTransformer.cs
- Misc.cs
- SQLInt64.cs
- SerializationException.cs
- SoapExtensionTypeElement.cs
- CapabilitiesUse.cs