Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / SqlClient / SqlCommandBuilder.cs / 1 / SqlCommandBuilder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Data.Sql; using System.Data.SqlTypes; using System.Diagnostics; using System.Globalization; using System.Text; using System.Runtime.CompilerServices; using System.Threading; #if WINFSInternalOnly internal #else public #endif sealed class SqlCommandBuilder : DbCommandBuilder { public SqlCommandBuilder() : base() { GC.SuppressFinalize(this); base.QuotePrefix = "["; // initialize base with defaults base.QuoteSuffix = "]"; } public SqlCommandBuilder(SqlDataAdapter adapter) : this() { DataAdapter = adapter; } ///SqlServer only supports CatalogLocation.Start [ Browsable(false), EditorBrowsableAttribute(EditorBrowsableState.Never) , DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override CatalogLocation CatalogLocation { get { return CatalogLocation.Start; } set { if (CatalogLocation.Start != value) { throw ADP.SingleValuedProperty("CatalogLocation", "Start"); } } } ///SqlServer only supports '.' [ Browsable(false), EditorBrowsableAttribute(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string CatalogSeparator { get { return "."; } set { if ("." != value) { throw ADP.SingleValuedProperty("CatalogSeparator", "."); } } } [ DefaultValue(null), ResCategoryAttribute(Res.DataCategory_Update), ResDescriptionAttribute(Res.SqlCommandBuilder_DataAdapter), // MDAC 60524 ] new public SqlDataAdapter DataAdapter { get { return (SqlDataAdapter)base.DataAdapter; } set { base.DataAdapter = value; } } ///SqlServer only supports '.' [ Browsable(false), EditorBrowsableAttribute(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string QuotePrefix { get { return base.QuotePrefix; } set { if (("[" != value) && ("\"" != value)){ throw ADP.DoubleValuedProperty("QuotePrefix", "[", "\""); } base.QuotePrefix = value; } } [ Browsable(false), EditorBrowsableAttribute(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string QuoteSuffix { get { return base.QuoteSuffix; } set { if (("]" != value) && ("\"" != value)) { throw ADP.DoubleValuedProperty("QuoteSuffix", "]", "\""); } base.QuoteSuffix = value; } } [ Browsable(false), EditorBrowsableAttribute(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public override string SchemaSeparator { get { return "."; } set { if ("." != value) { throw ADP.SingleValuedProperty("SchemaSeparator","."); } } } private void SqlRowUpdatingHandler(object sender, SqlRowUpdatingEventArgs ruevent) { base.RowUpdatingHandler(ruevent); } new public SqlCommand GetInsertCommand() { return (SqlCommand) base.GetInsertCommand(); } new public SqlCommand GetInsertCommand(bool useColumnsForParameterNames) { return (SqlCommand) base.GetInsertCommand(useColumnsForParameterNames); } new public SqlCommand GetUpdateCommand() { return (SqlCommand) base.GetUpdateCommand(); } new public SqlCommand GetUpdateCommand(bool useColumnsForParameterNames) { return (SqlCommand) base.GetUpdateCommand(useColumnsForParameterNames); } new public SqlCommand GetDeleteCommand() { return (SqlCommand) base.GetDeleteCommand(); } new public SqlCommand GetDeleteCommand(bool useColumnsForParameterNames) { return (SqlCommand) base.GetDeleteCommand(useColumnsForParameterNames); } override protected void ApplyParameterInfo(DbParameter parameter, DataRow datarow, StatementType statementType, bool whereClause) { SqlParameter p = (SqlParameter) parameter; object valueType = datarow[SchemaTableColumn.ProviderType]; p.SqlDbType = (SqlDbType) valueType; p.Offset = 0; if ((p.SqlDbType == SqlDbType.Udt) && !p.SourceColumnNullMapping) { p.UdtTypeName = datarow["DataTypeName"] as string; } else { p.UdtTypeName = String.Empty; } object bvalue = datarow[SchemaTableColumn.NumericPrecision]; if (DBNull.Value != bvalue) { byte bval = (byte)(short)bvalue; p.PrecisionInternal = ((0xff != bval) ? bval : (byte)0); } bvalue = datarow[SchemaTableColumn.NumericScale]; if (DBNull.Value != bvalue) { byte bval = (byte)(short)bvalue; p.ScaleInternal = ((0xff != bval) ? bval : (byte)0); } } override protected string GetParameterName(int parameterOrdinal) { return "@p" + parameterOrdinal.ToString(System.Globalization.CultureInfo.InvariantCulture); } override protected string GetParameterName(string parameterName) { return "@" + parameterName; } override protected string GetParameterPlaceholder(int parameterOrdinal) { return "@p" + parameterOrdinal.ToString(System.Globalization.CultureInfo.InvariantCulture); } private void ConsistentQuoteDelimiters(string quotePrefix, string quoteSuffix){ Debug.Assert(quotePrefix == "\"" || quotePrefix == "["); if ((("\"" == quotePrefix) && ("\"" != quoteSuffix)) || (("[" == quotePrefix) && ("]" != quoteSuffix))) { throw ADP.InvalidPrefixSuffix(); } } static public void DeriveParameters(SqlCommand command) { // MDAC 65927\ SqlConnection.ExecutePermission.Demand(); if (null == command) { throw ADP.ArgumentNull("command"); } RuntimeHelpers.PrepareConstrainedRegions(); try { #if DEBUG object initialReliabilitySlotValue = Thread.GetData(TdsParser.ReliabilitySlot); RuntimeHelpers.PrepareConstrainedRegions(); try { Thread.SetData(TdsParser.ReliabilitySlot, true); #endif command.DeriveParameters(); #if DEBUG } finally { Thread.SetData(TdsParser.ReliabilitySlot, initialReliabilitySlotValue); } #endif } catch (System.OutOfMemoryException e) { if (null != command && null != command.Connection) { command.Connection.Abort(e); } throw; } catch (System.StackOverflowException e) { if (null != command && null != command.Connection) { command.Connection.Abort(e); } throw; } catch (System.Threading.ThreadAbortException e) { if (null != command && null != command.Connection) { command.Connection.Abort(e); } throw; } } /* private static void GetLiteralInfo (DataRow dataTypeRow, out string literalPrefix, out string literalSuffix) { Object tempValue = dataTypeRow[DbMetaDataColumnNames.LiteralPrefix]; if (tempValue == DBNull.Value) { literalPrefix = ""; } else { literalPrefix = (string)dataTypeRow[DbMetaDataColumnNames.LiteralPrefix]; } tempValue = dataTypeRow[DbMetaDataColumnNames.LiteralSuffix]; if (tempValue == DBNull.Value) { literalSuffix = ""; } else { literalSuffix = (string)dataTypeRow[DbMetaDataColumnNames.LiteralSuffix]; } } */ protected override DataTable GetSchemaTable (DbCommand srcCommand) { SqlCommand sqlCommand = srcCommand as SqlCommand; SqlNotificationRequest notificationRequest = sqlCommand.Notification; bool notificationAutoEnlist = sqlCommand.NotificationAutoEnlist; sqlCommand.Notification = null; sqlCommand.NotificationAutoEnlist = false; try { using (SqlDataReader dataReader = sqlCommand.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo)){ return dataReader.GetSchemaTable(); } } finally { sqlCommand.Notification = notificationRequest; sqlCommand.NotificationAutoEnlist = notificationAutoEnlist; } } protected override DbCommand InitializeCommand(DbCommand command) { SqlCommand cmd = (SqlCommand) base.InitializeCommand(command); cmd.NotificationAutoEnlist = false; return cmd; } public override string QuoteIdentifier(string unquotedIdentifier){ ADP.CheckArgumentNull(unquotedIdentifier, "unquotedIdentifier"); string quoteSuffixLocal = QuoteSuffix; string quotePrefixLocal = QuotePrefix; ConsistentQuoteDelimiters(quotePrefixLocal, quoteSuffixLocal); return ADP.BuildQuotedString(quotePrefixLocal,quoteSuffixLocal,unquotedIdentifier);; } override protected void SetRowUpdatingHandler(DbDataAdapter adapter) { Debug.Assert(adapter is SqlDataAdapter, "!SqlDataAdapter"); if (adapter == base.DataAdapter) { // removal case ((SqlDataAdapter)adapter).RowUpdating -= SqlRowUpdatingHandler; } else { // adding case ((SqlDataAdapter)adapter).RowUpdating += SqlRowUpdatingHandler; } } public override string UnquoteIdentifier(string quotedIdentifier){ ADP.CheckArgumentNull(quotedIdentifier, "quotedIdentifier"); String unquotedIdentifier; string quoteSuffixLocal = QuoteSuffix; string quotePrefixLocal = QuotePrefix; ConsistentQuoteDelimiters(quotePrefixLocal, quoteSuffixLocal); // ignoring the return value becasue an unquoted source string is OK here ADP.RemoveStringQuotes(quotePrefixLocal, quoteSuffixLocal, quotedIdentifier, out unquotedIdentifier); return unquotedIdentifier; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExpressionBindings.cs
- FixedMaxHeap.cs
- AxisAngleRotation3D.cs
- WebPartCloseVerb.cs
- FacetChecker.cs
- RelationshipEnd.cs
- CornerRadius.cs
- InternalControlCollection.cs
- DefaultTraceListener.cs
- IndividualDeviceConfig.cs
- StylusTip.cs
- documentsequencetextpointer.cs
- TraceHandler.cs
- StringArrayConverter.cs
- ProviderIncompatibleException.cs
- XmlMembersMapping.cs
- WebConfigurationManager.cs
- IsolatedStorageFileStream.cs
- DataSpaceManager.cs
- HostedElements.cs
- ViewCellRelation.cs
- Propagator.Evaluator.cs
- SoapHelper.cs
- Int32Collection.cs
- Rect3DValueSerializer.cs
- DecoderFallback.cs
- DbDataRecord.cs
- counter.cs
- ComAwareEventInfo.cs
- CallbackHandler.cs
- OdbcRowUpdatingEvent.cs
- ContainsRowNumberChecker.cs
- AssemblyResourceLoader.cs
- HTTPNotFoundHandler.cs
- RulePatternOps.cs
- SrgsElementFactory.cs
- SBCSCodePageEncoding.cs
- VirtualDirectoryMapping.cs
- DispatcherExceptionFilterEventArgs.cs
- DeclaredTypeElement.cs
- IntegerFacetDescriptionElement.cs
- WinInet.cs
- HttpClientCertificate.cs
- DbParameterHelper.cs
- WindowsBrush.cs
- ImageDrawing.cs
- HttpPostLocalhostServerProtocol.cs
- ZoneMembershipCondition.cs
- FileSystemWatcher.cs
- Rfc4050KeyFormatter.cs
- NumberFormatter.cs
- XmlSchemaObjectTable.cs
- TriState.cs
- TemplateControlBuildProvider.cs
- TimelineGroup.cs
- TextEffect.cs
- ObjectHandle.cs
- ListViewDeleteEventArgs.cs
- BulletedList.cs
- AttributeCollection.cs
- ConstraintManager.cs
- RedirectionProxy.cs
- SafeEventLogReadHandle.cs
- CounterCreationDataCollection.cs
- WebSysDescriptionAttribute.cs
- XMLSyntaxException.cs
- ChildTable.cs
- ExceptionUtil.cs
- PageStatePersister.cs
- TabControlEvent.cs
- MobileFormsAuthentication.cs
- FragmentQuery.cs
- RegexWriter.cs
- CloudCollection.cs
- WebControl.cs
- ListViewItemMouseHoverEvent.cs
- DESCryptoServiceProvider.cs
- ScrollItemPatternIdentifiers.cs
- EmptyStringExpandableObjectConverter.cs
- JoinCqlBlock.cs
- SecurityElement.cs
- FontSource.cs
- GeneralTransform.cs
- RoutedEventHandlerInfo.cs
- AssemblyBuilder.cs
- XmlRootAttribute.cs
- PersonalizationStateQuery.cs
- AccessDataSourceView.cs
- ImageSourceValueSerializer.cs
- AutomationAttributeInfo.cs
- IsolatedStoragePermission.cs
- CommandConverter.cs
- GetPageNumberCompletedEventArgs.cs
- ContextMenu.cs
- EncoderParameter.cs
- StylusShape.cs
- Attributes.cs
- ProbeMatchesMessage11.cs
- CollectionAdapters.cs
- CompilationUnit.cs