Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / SqlClient / SqlCommandBuilder.cs / 1305376 / 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;
public 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");
}
SNIHandle bestEffortCleanupTarget = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
#if DEBUG
TdsParser.ReliabilitySection tdsReliabilitySection = new TdsParser.ReliabilitySection();
RuntimeHelpers.PrepareConstrainedRegions();
try {
tdsReliabilitySection.Start();
#else
{
#endif
bestEffortCleanupTarget = SqlInternalConnection.GetBestEffortCleanupTarget(command.Connection);
command.DeriveParameters();
}
#if DEBUG
finally {
tdsReliabilitySection.Stop();
}
#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);
}
SqlInternalConnection.BestEffortCleanup(bestEffortCleanupTarget);
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScrollableControl.cs
- Int32RectValueSerializer.cs
- RequestNavigateEventArgs.cs
- XmlSchemaInclude.cs
- ChtmlTextWriter.cs
- ListViewContainer.cs
- ActivityExecutor.cs
- SafeHandles.cs
- Group.cs
- ExtendedPropertyDescriptor.cs
- UndoEngine.cs
- AffineTransform3D.cs
- CacheEntry.cs
- CompatibleComparer.cs
- GridViewAutomationPeer.cs
- CompensationTokenData.cs
- CookieParameter.cs
- ByteConverter.cs
- ObjectSpanRewriter.cs
- DateTimeSerializationSection.cs
- XmlSchemaCompilationSettings.cs
- HeaderedContentControl.cs
- DATA_BLOB.cs
- UIInitializationException.cs
- PropertyValueUIItem.cs
- ColumnMap.cs
- MenuCommand.cs
- SoapReflectionImporter.cs
- EarlyBoundInfo.cs
- TabPanel.cs
- ClockController.cs
- DataTableNewRowEvent.cs
- XmlSchemaSequence.cs
- XmlSchemaSimpleContent.cs
- ProgressBarAutomationPeer.cs
- ProfileSection.cs
- ResolveCriteriaApril2005.cs
- SendMessageContent.cs
- RangeContentEnumerator.cs
- HttpContext.cs
- MetaModel.cs
- Brush.cs
- ListViewItem.cs
- SqlErrorCollection.cs
- updateconfighost.cs
- IApplicationTrustManager.cs
- DelegatedStream.cs
- ItemsControlAutomationPeer.cs
- RadioButtonBaseAdapter.cs
- Highlights.cs
- PtsCache.cs
- AvtEvent.cs
- AmbientProperties.cs
- DelimitedListTraceListener.cs
- BrowserDefinition.cs
- Parser.cs
- XmlNamespaceDeclarationsAttribute.cs
- LayoutTableCell.cs
- LoginName.cs
- HttpConfigurationSystem.cs
- SecUtil.cs
- CharacterBuffer.cs
- DisplayNameAttribute.cs
- TreeViewImageIndexConverter.cs
- EventHandlingScope.cs
- WebPartDeleteVerb.cs
- MetadataSerializer.cs
- XhtmlBasicFormAdapter.cs
- StateBag.cs
- Types.cs
- DetailsViewPageEventArgs.cs
- PointCollection.cs
- StorageEntityContainerMapping.cs
- ADMembershipProvider.cs
- XmlDataImplementation.cs
- BitmapCodecInfo.cs
- BlockCollection.cs
- TextContainerChangedEventArgs.cs
- SqlParameter.cs
- DoubleLinkList.cs
- UdpUtility.cs
- DesignerSerializationVisibilityAttribute.cs
- FlagsAttribute.cs
- EncryptedData.cs
- FileDialogCustomPlace.cs
- EventHandlingScope.cs
- DataObjectSettingDataEventArgs.cs
- WebServiceReceive.cs
- XmlConverter.cs
- HashHelper.cs
- ReachUIElementCollectionSerializerAsync.cs
- AssemblyAttributesGoHere.cs
- RtfToXamlLexer.cs
- DateTimeFormat.cs
- UITypeEditor.cs
- RoleGroupCollection.cs
- ClientSettingsStore.cs
- EnterpriseServicesHelper.cs
- XmlHelper.cs
- TrackBar.cs