Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ToolStripSeparatorRenderEventArgs.cs
- ToolStripDropDownMenu.cs
- SiteMapSection.cs
- StreamGeometry.cs
- AutomationPattern.cs
- ApplicationServicesHostFactory.cs
- EdmType.cs
- CategoryGridEntry.cs
- keycontainerpermission.cs
- FactoryGenerator.cs
- AppSettingsSection.cs
- InstalledFontCollection.cs
- StringInfo.cs
- XPathSelfQuery.cs
- ModelUIElement3D.cs
- AnnotationMap.cs
- ExternalFile.cs
- BufferedOutputStream.cs
- StringDictionaryWithComparer.cs
- OdbcParameter.cs
- UpdatePanelTriggerCollection.cs
- ItemCheckedEvent.cs
- dsa.cs
- MappingMetadataHelper.cs
- GlobalizationAssembly.cs
- Component.cs
- ScriptComponentDescriptor.cs
- FileRecordSequenceCompletedAsyncResult.cs
- XmlSchemaChoice.cs
- PersistenceMetadataNamespace.cs
- ThemeableAttribute.cs
- ServiceContractListItem.cs
- SecurityBindingElementImporter.cs
- DateTimeParse.cs
- CharUnicodeInfo.cs
- FormCollection.cs
- FixedTextContainer.cs
- LayoutManager.cs
- XmlSchemaImport.cs
- _OSSOCK.cs
- WpfPayload.cs
- TraceXPathNavigator.cs
- DelegateTypeInfo.cs
- ActivityCodeGenerator.cs
- TemplatedMailWebEventProvider.cs
- StylusButtonCollection.cs
- OdbcEnvironmentHandle.cs
- TraceLevelStore.cs
- FileInfo.cs
- HelpProvider.cs
- WinEventTracker.cs
- TypeDescriptionProvider.cs
- WindowsRichEdit.cs
- MultiPropertyDescriptorGridEntry.cs
- GB18030Encoding.cs
- EncryptedKeyIdentifierClause.cs
- RangeBase.cs
- TargetControlTypeCache.cs
- UIPermission.cs
- IndexOutOfRangeException.cs
- TextPointer.cs
- XmlDataLoader.cs
- HtmlInputButton.cs
- RawStylusSystemGestureInputReport.cs
- AssemblyCache.cs
- sapiproxy.cs
- WinEventWrap.cs
- MaskedTextBox.cs
- AsynchronousChannelMergeEnumerator.cs
- Tracer.cs
- DrawingContext.cs
- WebBrowserHelper.cs
- ObjectDataSourceFilteringEventArgs.cs
- DbConnectionFactory.cs
- DBSchemaTable.cs
- MessagePropertyDescription.cs
- MultipleCopiesCollection.cs
- ChannelManager.cs
- WorkflowLayouts.cs
- Int32Storage.cs
- SocketPermission.cs
- XmlDataSourceNodeDescriptor.cs
- WmlPanelAdapter.cs
- ClosableStream.cs
- TypedElement.cs
- WebPartDeleteVerb.cs
- PageAsyncTask.cs
- AnnouncementEventArgs.cs
- OdbcDataReader.cs
- WorkflowRuntimeService.cs
- Opcode.cs
- ToolBar.cs
- WebRequestModulesSection.cs
- TopClause.cs
- PartialCachingControl.cs
- DataGridAutoFormat.cs
- RoutedEventValueSerializer.cs
- Matrix.cs
- ProxyWebPartManager.cs
- BindingValueChangedEventArgs.cs