Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / WebControls / AccessDataSource.cs / 1 / AccessDataSource.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Data.OleDb; using System.Diagnostics; using System.Drawing; using System.Drawing.Design; using System.IO; using System.Security.Permissions; using System.Text; using System.Web.Caching; using System.Web.UI; ////// Allows a user to create a declarative connection to an Access database in a .aspx page. /// [ Designer("System.Web.UI.Design.WebControls.AccessDataSourceDesigner, " + AssemblyRef.SystemDesign), ToolboxBitmap(typeof(AccessDataSource)), WebSysDescription(SR.AccessDataSource_Description), WebSysDisplayName(SR.AccessDataSource_DisplayName) ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class AccessDataSource : SqlDataSource { private const string OleDbProviderName = "System.Data.OleDb"; private FileDataSourceCache _cache; private string _connectionString; private string _dataFile; private string _physicalDataFile; ////// Creates a new instance of AccessDataSource. /// public AccessDataSource() : base() { } ////// Creates a new instance of AccessDataSource with a specified connection string and select command. /// public AccessDataSource(string dataFile, string selectCommand) : base() { if (String.IsNullOrEmpty(dataFile)) { throw new ArgumentNullException("dataFile"); } DataFile = dataFile; SelectCommand = selectCommand; } ////// Specifies the cache settings for this data source. For the cache to /// work, the DataSourceMode must be set to DataSet. /// internal override DataSourceCache Cache { get { if (_cache == null) { _cache = new FileDataSourceCache(); } return _cache; } } ////// Gets the connection string for the AccessDataSource. This property is auto-generated and cannot be set. /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string ConnectionString { get { if (_connectionString == null) { _connectionString = CreateConnectionString(); } return _connectionString; } set { throw new InvalidOperationException(SR.GetString(SR.AccessDataSource_CannotSetConnectionString)); } } ////// The name of an Access database file. /// This property is not stored in ViewState. /// [ DefaultValue(""), Editor("System.Web.UI.Design.MdbDataFileEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebCategory("Data"), WebSysDescription(SR.AccessDataSource_DataFile), ] public string DataFile { get { return (_dataFile == null) ? String.Empty : _dataFile; } set { if (DataFile != value) { _dataFile = value; _connectionString = null; _physicalDataFile = null; RaiseDataSourceChangedEvent(EventArgs.Empty); } } } ////// Gets the file data source cache object. /// private FileDataSourceCache FileDataSourceCache { get { FileDataSourceCache fileCache = Cache as FileDataSourceCache; Debug.Assert(fileCache != null, "Cache object should be a FileDataSourceCache"); return fileCache; } } ////// Gets the Physical path of the data file. /// private string PhysicalDataFile { get { if (_physicalDataFile == null) { _physicalDataFile = GetPhysicalDataFilePath(); } return _physicalDataFile; } } ////// Gets/sets the ADO.net managed provider name. This property is restricted to the OLE DB provider and cannot be set. /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string ProviderName { get { return OleDbProviderName; } set { throw new InvalidOperationException(SR.GetString(SR.AccessDataSource_CannotSetProvider, ID)); } } ////// A semi-colon delimited string indicating which databases to use for the dependency in the format "database1:table1;database2:table2". /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string SqlCacheDependency { get { throw new NotSupportedException(SR.GetString(SR.AccessDataSource_SqlCacheDependencyNotSupported, ID)); } set { throw new NotSupportedException(SR.GetString(SR.AccessDataSource_SqlCacheDependencyNotSupported, ID)); } } private void AddCacheFileDependency() { FileDataSourceCache.FileDependencies.Clear(); string filename = PhysicalDataFile; if (filename.Length > 0) { FileDataSourceCache.FileDependencies.Add(filename); } } ////// Creates a connection string for an Access database connection. /// The JET provider is automatically used, and the filename, username, password, and /// share mode are are set. /// private string CreateConnectionString() { return "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + PhysicalDataFile; } ////// Creates a new AccessDataSourceView. /// protected override SqlDataSourceView CreateDataSourceView(string viewName) { return new AccessDataSourceView(this, viewName, Context); } protected override DbProviderFactory GetDbProviderFactory() { return OleDbFactory.Instance; } ////// Gets the appropriate mapped path for the DataFile. /// private string GetPhysicalDataFilePath() { string filename = DataFile; if (filename.Length == 0) { return null; } if (!System.Web.Util.UrlPath.IsAbsolutePhysicalPath(filename)) { // Root relative path if (DesignMode) { // This exception should never be thrown - the designer always maps paths // before using the runtime control. throw new NotSupportedException(SR.GetString(SR.AccessDataSource_DesignTimeRelativePathsNotSupported, ID)); } filename = Context.Request.MapPath(filename, AppRelativeTemplateSourceDirectory, true); } HttpRuntime.CheckFilePermission(filename, true); // We also need to check for path discovery permissions for the // file since the page developer will be able to see the physical // path in the ConnectionString property. if (!HttpRuntime.HasPathDiscoveryPermission(filename)) { throw new HttpException(SR.GetString(SR.AccessDataSource_NoPathDiscoveryPermission, HttpRuntime.GetSafePath(filename), ID)); } return filename; } ////// Saves data to the cache. /// internal override void SaveDataToCache(int startRowIndex, int maximumRows, object data, CacheDependency dependency) { AddCacheFileDependency(); base.SaveDataToCache(startRowIndex, maximumRows, data, dependency); } /*internal override void SaveTotalRowCountToCache(int totalRowCount) { AddCacheFileDependency(); base.SaveTotalRowCountToCache(totalRowCount); }*/ } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Data.OleDb; using System.Diagnostics; using System.Drawing; using System.Drawing.Design; using System.IO; using System.Security.Permissions; using System.Text; using System.Web.Caching; using System.Web.UI; ////// Allows a user to create a declarative connection to an Access database in a .aspx page. /// [ Designer("System.Web.UI.Design.WebControls.AccessDataSourceDesigner, " + AssemblyRef.SystemDesign), ToolboxBitmap(typeof(AccessDataSource)), WebSysDescription(SR.AccessDataSource_Description), WebSysDisplayName(SR.AccessDataSource_DisplayName) ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class AccessDataSource : SqlDataSource { private const string OleDbProviderName = "System.Data.OleDb"; private FileDataSourceCache _cache; private string _connectionString; private string _dataFile; private string _physicalDataFile; ////// Creates a new instance of AccessDataSource. /// public AccessDataSource() : base() { } ////// Creates a new instance of AccessDataSource with a specified connection string and select command. /// public AccessDataSource(string dataFile, string selectCommand) : base() { if (String.IsNullOrEmpty(dataFile)) { throw new ArgumentNullException("dataFile"); } DataFile = dataFile; SelectCommand = selectCommand; } ////// Specifies the cache settings for this data source. For the cache to /// work, the DataSourceMode must be set to DataSet. /// internal override DataSourceCache Cache { get { if (_cache == null) { _cache = new FileDataSourceCache(); } return _cache; } } ////// Gets the connection string for the AccessDataSource. This property is auto-generated and cannot be set. /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string ConnectionString { get { if (_connectionString == null) { _connectionString = CreateConnectionString(); } return _connectionString; } set { throw new InvalidOperationException(SR.GetString(SR.AccessDataSource_CannotSetConnectionString)); } } ////// The name of an Access database file. /// This property is not stored in ViewState. /// [ DefaultValue(""), Editor("System.Web.UI.Design.MdbDataFileEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebCategory("Data"), WebSysDescription(SR.AccessDataSource_DataFile), ] public string DataFile { get { return (_dataFile == null) ? String.Empty : _dataFile; } set { if (DataFile != value) { _dataFile = value; _connectionString = null; _physicalDataFile = null; RaiseDataSourceChangedEvent(EventArgs.Empty); } } } ////// Gets the file data source cache object. /// private FileDataSourceCache FileDataSourceCache { get { FileDataSourceCache fileCache = Cache as FileDataSourceCache; Debug.Assert(fileCache != null, "Cache object should be a FileDataSourceCache"); return fileCache; } } ////// Gets the Physical path of the data file. /// private string PhysicalDataFile { get { if (_physicalDataFile == null) { _physicalDataFile = GetPhysicalDataFilePath(); } return _physicalDataFile; } } ////// Gets/sets the ADO.net managed provider name. This property is restricted to the OLE DB provider and cannot be set. /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string ProviderName { get { return OleDbProviderName; } set { throw new InvalidOperationException(SR.GetString(SR.AccessDataSource_CannotSetProvider, ID)); } } ////// A semi-colon delimited string indicating which databases to use for the dependency in the format "database1:table1;database2:table2". /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string SqlCacheDependency { get { throw new NotSupportedException(SR.GetString(SR.AccessDataSource_SqlCacheDependencyNotSupported, ID)); } set { throw new NotSupportedException(SR.GetString(SR.AccessDataSource_SqlCacheDependencyNotSupported, ID)); } } private void AddCacheFileDependency() { FileDataSourceCache.FileDependencies.Clear(); string filename = PhysicalDataFile; if (filename.Length > 0) { FileDataSourceCache.FileDependencies.Add(filename); } } ////// Creates a connection string for an Access database connection. /// The JET provider is automatically used, and the filename, username, password, and /// share mode are are set. /// private string CreateConnectionString() { return "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + PhysicalDataFile; } ////// Creates a new AccessDataSourceView. /// protected override SqlDataSourceView CreateDataSourceView(string viewName) { return new AccessDataSourceView(this, viewName, Context); } protected override DbProviderFactory GetDbProviderFactory() { return OleDbFactory.Instance; } ////// Gets the appropriate mapped path for the DataFile. /// private string GetPhysicalDataFilePath() { string filename = DataFile; if (filename.Length == 0) { return null; } if (!System.Web.Util.UrlPath.IsAbsolutePhysicalPath(filename)) { // Root relative path if (DesignMode) { // This exception should never be thrown - the designer always maps paths // before using the runtime control. throw new NotSupportedException(SR.GetString(SR.AccessDataSource_DesignTimeRelativePathsNotSupported, ID)); } filename = Context.Request.MapPath(filename, AppRelativeTemplateSourceDirectory, true); } HttpRuntime.CheckFilePermission(filename, true); // We also need to check for path discovery permissions for the // file since the page developer will be able to see the physical // path in the ConnectionString property. if (!HttpRuntime.HasPathDiscoveryPermission(filename)) { throw new HttpException(SR.GetString(SR.AccessDataSource_NoPathDiscoveryPermission, HttpRuntime.GetSafePath(filename), ID)); } return filename; } ////// Saves data to the cache. /// internal override void SaveDataToCache(int startRowIndex, int maximumRows, object data, CacheDependency dependency) { AddCacheFileDependency(); base.SaveDataToCache(startRowIndex, maximumRows, data, dependency); } /*internal override void SaveTotalRowCountToCache(int totalRowCount) { AddCacheFileDependency(); base.SaveTotalRowCountToCache(totalRowCount); }*/ } } // 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
- HttpCacheVaryByContentEncodings.cs
- GCHandleCookieTable.cs
- CommandID.cs
- IssuedSecurityTokenProvider.cs
- OverlappedAsyncResult.cs
- StatusBarPanel.cs
- DataSourceCacheDurationConverter.cs
- BitmapImage.cs
- Attributes.cs
- ContextMenuStripGroupCollection.cs
- List.cs
- TextWriterTraceListener.cs
- AdCreatedEventArgs.cs
- NamedPipeWorkerProcess.cs
- StrongNameKeyPair.cs
- BufferedMessageWriter.cs
- TypedTableBase.cs
- TransformedBitmap.cs
- WindowsIdentity.cs
- CompositeScriptReferenceEventArgs.cs
- SchemaHelper.cs
- QueryCursorEventArgs.cs
- RawStylusInputCustomData.cs
- IndentedWriter.cs
- DataRowChangeEvent.cs
- Point.cs
- SolidColorBrush.cs
- MemberPathMap.cs
- mactripleDES.cs
- SqlNotificationEventArgs.cs
- MobileCapabilities.cs
- TreeViewEvent.cs
- Site.cs
- Propagator.JoinPropagator.cs
- ViewManager.cs
- GeneralTransform3DGroup.cs
- MemoryPressure.cs
- MethodMessage.cs
- CreatingCookieEventArgs.cs
- HtmlTableCellCollection.cs
- FormViewInsertEventArgs.cs
- MouseGesture.cs
- PrintPreviewControl.cs
- DataBoundControlAdapter.cs
- ArrayList.cs
- CodeIdentifiers.cs
- File.cs
- GeneralTransform2DTo3DTo2D.cs
- Utility.cs
- jithelpers.cs
- HierarchicalDataBoundControlAdapter.cs
- HttpHandlerAction.cs
- DatagridviewDisplayedBandsData.cs
- HttpAsyncResult.cs
- VarRefManager.cs
- InkCanvasAutomationPeer.cs
- DbConnectionHelper.cs
- DataStreams.cs
- AmbientValueAttribute.cs
- CompiledAction.cs
- ContentElement.cs
- HttpWebRequest.cs
- IntranetCredentialPolicy.cs
- SafeNativeMethodsOther.cs
- basevalidator.cs
- AttributeData.cs
- COSERVERINFO.cs
- EdmType.cs
- DefaultAsyncDataDispatcher.cs
- RemotingConfigParser.cs
- AmbientLight.cs
- PreviousTrackingServiceAttribute.cs
- VirtualizedContainerService.cs
- XPathPatternBuilder.cs
- Matrix.cs
- BitmapEffectGroup.cs
- WpfWebRequestHelper.cs
- CompilerScope.cs
- X500Name.cs
- DataGrid.cs
- SqlNotificationRequest.cs
- VarInfo.cs
- QilBinary.cs
- PrePostDescendentsWalker.cs
- FacetEnabledSchemaElement.cs
- TextProperties.cs
- XmlImplementation.cs
- BinaryNode.cs
- FormViewPageEventArgs.cs
- UserControl.cs
- ComponentChangedEvent.cs
- CompilationLock.cs
- _NetRes.cs
- CharAnimationBase.cs
- ListDictionaryInternal.cs
- NotImplementedException.cs
- QuaternionRotation3D.cs
- Propagator.Evaluator.cs
- XslAstAnalyzer.cs
- ISFClipboardData.cs