Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / Odbc / OdbcConnectionFactory.cs / 1 / OdbcConnectionFactory.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Odbc { using System; using System.Data.Common; using System.Data.ProviderBase; using System.Diagnostics; using System.Collections.Specialized; using System.Configuration; using System.IO; sealed internal class OdbcConnectionFactory : DbConnectionFactory { private OdbcConnectionFactory() : base() {} // At this time, the ODBC Provider doesn't have any connection pool counters // because we'd only confuse people with "non-pooled" connections that are // actually being pooled by the native pooler. private const string _MetaData = ":MetaDataXml"; private const string _defaultMetaDataXml = "defaultMetaDataXml"; public static readonly OdbcConnectionFactory SingletonInstance = new OdbcConnectionFactory(); override public DbProviderFactory ProviderFactory { get { return OdbcFactory.Instance; } } override protected DbConnectionInternal CreateConnection(DbConnectionOptions options, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) { DbConnectionInternal result = new OdbcConnectionOpen(owningObject as OdbcConnection, options as OdbcConnectionString); return result; } override protected DbConnectionOptions CreateConnectionOptions(string connectionString, DbConnectionOptions previous) { Debug.Assert(!ADP.IsEmpty(connectionString), "empty connectionString"); OdbcConnectionString result = new OdbcConnectionString(connectionString, (null != previous)); return result; } override protected DbConnectionPoolGroupOptions CreateConnectionPoolGroupOptions( DbConnectionOptions connectionOptions ) { // At this time, the ODBC provider only supports native pooling so we // simply return NULL to indicate that. return null; } override internal DbConnectionPoolGroupProviderInfo CreateConnectionPoolGroupProviderInfo (DbConnectionOptions connectionOptions) { return new OdbcConnectionPoolGroupProviderInfo(); } override protected DbMetaDataFactory CreateMetaDataFactory(DbConnectionInternal internalConnection, out bool cacheMetaDataFactory){ Debug.Assert (internalConnection != null,"internalConnection may not be null."); cacheMetaDataFactory = false; OdbcConnection odbcOuterConnection = ((OdbcConnectionOpen)internalConnection).OuterConnection; Debug.Assert(odbcOuterConnection != null,"outer connection may not be null."); NameValueCollection settings = (NameValueCollection)PrivilegedConfigurationManager.GetSection("system.data.odbc"); Stream XMLStream =null; // get the DBMS Name object driverName = null; string stringValue = odbcOuterConnection.GetInfoStringUnhandled(ODBC32.SQL_INFO.DRIVER_NAME); if (stringValue != null) { driverName = stringValue; } if (settings != null){ string [] values = null; string metaDataXML = null; // first try to get the provider specific xml // if driver name is not supported we can't build the settings key needed to // get the provider specific XML path if (driverName != null){ metaDataXML = ((string)driverName) + _MetaData; values = settings.GetValues(metaDataXML); } // if we did not find provider specific xml see if there is new default xml if (values == null) { metaDataXML = _defaultMetaDataXml; values = settings.GetValues(metaDataXML); } // If there is an XML file get it if (values != null) { XMLStream = ADP.GetXmlStreamFromValues(values,metaDataXML); } } // use the embedded xml if the user did not over ride it if (XMLStream == null){ XMLStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("System.Data.Odbc.OdbcMetaData.xml"); cacheMetaDataFactory = true; } Debug.Assert (XMLStream != null,"XMLstream may not be null."); String versionString = odbcOuterConnection.GetInfoStringUnhandled(ODBC32.SQL_INFO.DBMS_VER); return new OdbcMetaDataFactory (XMLStream, versionString, versionString, odbcOuterConnection); } override internal DbConnectionPoolGroup GetConnectionPoolGroup(DbConnection connection) { OdbcConnection c = (connection as OdbcConnection); if (null != c) { return c.PoolGroup; } return null; } override internal DbConnectionInternal GetInnerConnection(DbConnection connection) { OdbcConnection c = (connection as OdbcConnection); if (null != c) { return c.InnerConnection; } return null; } override protected int GetObjectId(DbConnection connection) { OdbcConnection c = (connection as OdbcConnection); if (null != c) { return c.ObjectID; } return 0; } override internal void PermissionDemand(DbConnection outerConnection) { OdbcConnection c = (outerConnection as OdbcConnection); if (null != c) { c.PermissionDemand(); } } override internal void SetConnectionPoolGroup(DbConnection outerConnection, DbConnectionPoolGroup poolGroup) { OdbcConnection c = (outerConnection as OdbcConnection); if (null != c) { c.PoolGroup = poolGroup; } } override internal void SetInnerConnectionEvent(DbConnection owningObject, DbConnectionInternal to) { OdbcConnection c = (owningObject as OdbcConnection); if (null != c) { c.SetInnerConnectionEvent(to); } } override internal bool SetInnerConnectionFrom(DbConnection owningObject, DbConnectionInternal to, DbConnectionInternal from) { OdbcConnection c = (owningObject as OdbcConnection); if (null != c) { return c.SetInnerConnectionFrom(to, from); } return false; } override internal void SetInnerConnectionTo(DbConnection owningObject, DbConnectionInternal to) { OdbcConnection c = (owningObject as OdbcConnection); if (null != c) { c.SetInnerConnectionTo(to); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Odbc { using System; using System.Data.Common; using System.Data.ProviderBase; using System.Diagnostics; using System.Collections.Specialized; using System.Configuration; using System.IO; sealed internal class OdbcConnectionFactory : DbConnectionFactory { private OdbcConnectionFactory() : base() {} // At this time, the ODBC Provider doesn't have any connection pool counters // because we'd only confuse people with "non-pooled" connections that are // actually being pooled by the native pooler. private const string _MetaData = ":MetaDataXml"; private const string _defaultMetaDataXml = "defaultMetaDataXml"; public static readonly OdbcConnectionFactory SingletonInstance = new OdbcConnectionFactory(); override public DbProviderFactory ProviderFactory { get { return OdbcFactory.Instance; } } override protected DbConnectionInternal CreateConnection(DbConnectionOptions options, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) { DbConnectionInternal result = new OdbcConnectionOpen(owningObject as OdbcConnection, options as OdbcConnectionString); return result; } override protected DbConnectionOptions CreateConnectionOptions(string connectionString, DbConnectionOptions previous) { Debug.Assert(!ADP.IsEmpty(connectionString), "empty connectionString"); OdbcConnectionString result = new OdbcConnectionString(connectionString, (null != previous)); return result; } override protected DbConnectionPoolGroupOptions CreateConnectionPoolGroupOptions( DbConnectionOptions connectionOptions ) { // At this time, the ODBC provider only supports native pooling so we // simply return NULL to indicate that. return null; } override internal DbConnectionPoolGroupProviderInfo CreateConnectionPoolGroupProviderInfo (DbConnectionOptions connectionOptions) { return new OdbcConnectionPoolGroupProviderInfo(); } override protected DbMetaDataFactory CreateMetaDataFactory(DbConnectionInternal internalConnection, out bool cacheMetaDataFactory){ Debug.Assert (internalConnection != null,"internalConnection may not be null."); cacheMetaDataFactory = false; OdbcConnection odbcOuterConnection = ((OdbcConnectionOpen)internalConnection).OuterConnection; Debug.Assert(odbcOuterConnection != null,"outer connection may not be null."); NameValueCollection settings = (NameValueCollection)PrivilegedConfigurationManager.GetSection("system.data.odbc"); Stream XMLStream =null; // get the DBMS Name object driverName = null; string stringValue = odbcOuterConnection.GetInfoStringUnhandled(ODBC32.SQL_INFO.DRIVER_NAME); if (stringValue != null) { driverName = stringValue; } if (settings != null){ string [] values = null; string metaDataXML = null; // first try to get the provider specific xml // if driver name is not supported we can't build the settings key needed to // get the provider specific XML path if (driverName != null){ metaDataXML = ((string)driverName) + _MetaData; values = settings.GetValues(metaDataXML); } // if we did not find provider specific xml see if there is new default xml if (values == null) { metaDataXML = _defaultMetaDataXml; values = settings.GetValues(metaDataXML); } // If there is an XML file get it if (values != null) { XMLStream = ADP.GetXmlStreamFromValues(values,metaDataXML); } } // use the embedded xml if the user did not over ride it if (XMLStream == null){ XMLStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("System.Data.Odbc.OdbcMetaData.xml"); cacheMetaDataFactory = true; } Debug.Assert (XMLStream != null,"XMLstream may not be null."); String versionString = odbcOuterConnection.GetInfoStringUnhandled(ODBC32.SQL_INFO.DBMS_VER); return new OdbcMetaDataFactory (XMLStream, versionString, versionString, odbcOuterConnection); } override internal DbConnectionPoolGroup GetConnectionPoolGroup(DbConnection connection) { OdbcConnection c = (connection as OdbcConnection); if (null != c) { return c.PoolGroup; } return null; } override internal DbConnectionInternal GetInnerConnection(DbConnection connection) { OdbcConnection c = (connection as OdbcConnection); if (null != c) { return c.InnerConnection; } return null; } override protected int GetObjectId(DbConnection connection) { OdbcConnection c = (connection as OdbcConnection); if (null != c) { return c.ObjectID; } return 0; } override internal void PermissionDemand(DbConnection outerConnection) { OdbcConnection c = (outerConnection as OdbcConnection); if (null != c) { c.PermissionDemand(); } } override internal void SetConnectionPoolGroup(DbConnection outerConnection, DbConnectionPoolGroup poolGroup) { OdbcConnection c = (outerConnection as OdbcConnection); if (null != c) { c.PoolGroup = poolGroup; } } override internal void SetInnerConnectionEvent(DbConnection owningObject, DbConnectionInternal to) { OdbcConnection c = (owningObject as OdbcConnection); if (null != c) { c.SetInnerConnectionEvent(to); } } override internal bool SetInnerConnectionFrom(DbConnection owningObject, DbConnectionInternal to, DbConnectionInternal from) { OdbcConnection c = (owningObject as OdbcConnection); if (null != c) { return c.SetInnerConnectionFrom(to, from); } return false; } override internal void SetInnerConnectionTo(DbConnection owningObject, DbConnectionInternal to) { OdbcConnection c = (owningObject as OdbcConnection); if (null != c) { c.SetInnerConnectionTo(to); } } } } // 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
- SQLInt16Storage.cs
- SafeSystemMetrics.cs
- Rect3DValueSerializer.cs
- SafeReadContext.cs
- CommonProperties.cs
- TransformConverter.cs
- UnitControl.cs
- RuleConditionDialog.Designer.cs
- BaseCollection.cs
- KeyPressEvent.cs
- WindowsIdentity.cs
- ValidationError.cs
- SmtpCommands.cs
- XmlBufferReader.cs
- DiagnosticTraceSource.cs
- JapaneseLunisolarCalendar.cs
- CustomPopupPlacement.cs
- TripleDESCryptoServiceProvider.cs
- WmpBitmapDecoder.cs
- AsyncOperationManager.cs
- DiagnosticTrace.cs
- DataGridCellItemAutomationPeer.cs
- SqlDataSource.cs
- ScriptResourceInfo.cs
- _AcceptOverlappedAsyncResult.cs
- XmlBinaryReader.cs
- WebPartUtil.cs
- WmlControlAdapter.cs
- XPathDocumentBuilder.cs
- WhitespaceRuleReader.cs
- WSFederationHttpBindingElement.cs
- RTLAwareMessageBox.cs
- UICuesEvent.cs
- CaseInsensitiveHashCodeProvider.cs
- UnsafeCollabNativeMethods.cs
- OutputCacheSettings.cs
- FileRecordSequenceCompletedAsyncResult.cs
- HyperlinkAutomationPeer.cs
- EdmConstants.cs
- DataServiceHostFactory.cs
- ObjectAnimationUsingKeyFrames.cs
- OracleParameterCollection.cs
- FormViewUpdateEventArgs.cs
- Types.cs
- SqlNodeAnnotations.cs
- RegionInfo.cs
- ScrollChangedEventArgs.cs
- IdentityHolder.cs
- ModelPropertyCollectionImpl.cs
- HashHelper.cs
- FrameworkEventSource.cs
- TdsParameterSetter.cs
- WindowsRichEditRange.cs
- HotCommands.cs
- SecurityCriticalDataForSet.cs
- WorkflowNamespace.cs
- OlePropertyStructs.cs
- RootBuilder.cs
- DataGridViewCellStyleConverter.cs
- SoapMessage.cs
- ThemeableAttribute.cs
- RelatedCurrencyManager.cs
- CryptoKeySecurity.cs
- GACIdentityPermission.cs
- ResourcePermissionBase.cs
- TransactionScope.cs
- ContainerFilterService.cs
- Cloud.cs
- BindableAttribute.cs
- EncryptedXml.cs
- DataListItem.cs
- StringBuilder.cs
- LinkUtilities.cs
- UIPermission.cs
- ContentElement.cs
- BuildProviderCollection.cs
- DetailsViewRow.cs
- StylusPointPropertyInfo.cs
- TextSelectionHelper.cs
- CalendarSelectionChangedEventArgs.cs
- ArraySegment.cs
- XPathScanner.cs
- CodeExpressionCollection.cs
- GPPOINT.cs
- JournalEntryListConverter.cs
- BuiltInPermissionSets.cs
- StorageBasedPackageProperties.cs
- CultureInfoConverter.cs
- TemplatedAdorner.cs
- XmlNodeChangedEventArgs.cs
- RectKeyFrameCollection.cs
- Drawing.cs
- DataGridCommandEventArgs.cs
- FileInfo.cs
- PermissionSetEnumerator.cs
- HostedHttpRequestAsyncResult.cs
- Rect.cs
- AccessViolationException.cs
- XmlElementAttribute.cs
- GregorianCalendarHelper.cs