| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406 |
- //------------------------------------------------------------------------------
- // <copyright file="SqlConnectionStringBuilder.cs" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // </copyright>
- // <owner current="true" primary="true">[....]</owner>
- // <owner current="true" primary="false">[....]</owner>
- //------------------------------------------------------------------------------
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Data.Common;
- using System.Diagnostics;
- using System.Globalization;
- using System.Runtime.Serialization;
- using System.Security.Permissions;
- using System.Text;
- using System.Diagnostics.CodeAnalysis;
- namespace System.Data.SqlClient {
- [DefaultProperty("DataSource")]
- [System.ComponentModel.TypeConverterAttribute(typeof(SqlConnectionStringBuilder.SqlConnectionStringBuilderConverter))]
- public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder {
- private enum Keywords { // specific ordering for ConnectionString output construction
- // NamedConnection,
- DataSource,
- FailoverPartner,
- AttachDBFilename,
- InitialCatalog,
- IntegratedSecurity,
- PersistSecurityInfo,
- UserID,
- Password,
- Enlist,
- Pooling,
- MinPoolSize,
- MaxPoolSize,
- AsynchronousProcessing,
- ConnectionReset,
- MultipleActiveResultSets,
- Replication,
- ConnectTimeout,
- Encrypt,
- TrustServerCertificate,
- LoadBalanceTimeout,
- NetworkLibrary,
- PacketSize,
- TypeSystemVersion,
- Authentication,
- ApplicationName,
- CurrentLanguage,
- WorkstationID,
- UserInstance,
- ContextConnection,
- TransactionBinding,
- ApplicationIntent,
- MultiSubnetFailover,
- TransparentNetworkIPResolution,
- ConnectRetryCount,
- ConnectRetryInterval,
- ColumnEncryptionSetting,
- // keep the count value last
- KeywordsCount
- }
- internal const int KeywordsCount = (int)Keywords.KeywordsCount;
- private static readonly string[] _validKeywords;
- private static readonly Dictionary<string,Keywords> _keywords;
- private ApplicationIntent _applicationIntent = DbConnectionStringDefaults.ApplicationIntent;
- private string _applicationName = DbConnectionStringDefaults.ApplicationName;
- private string _attachDBFilename = DbConnectionStringDefaults.AttachDBFilename;
- private string _currentLanguage = DbConnectionStringDefaults.CurrentLanguage;
- private string _dataSource = DbConnectionStringDefaults.DataSource;
- private string _failoverPartner = DbConnectionStringDefaults.FailoverPartner;
- private string _initialCatalog = DbConnectionStringDefaults.InitialCatalog;
- // private string _namedConnection = DbConnectionStringDefaults.NamedConnection;
- private string _networkLibrary = DbConnectionStringDefaults.NetworkLibrary;
- private string _password = DbConnectionStringDefaults.Password;
- private string _transactionBinding = DbConnectionStringDefaults.TransactionBinding;
- private string _typeSystemVersion = DbConnectionStringDefaults.TypeSystemVersion;
- private string _userID = DbConnectionStringDefaults.UserID;
- private string _workstationID = DbConnectionStringDefaults.WorkstationID;
- private int _connectTimeout = DbConnectionStringDefaults.ConnectTimeout;
- private int _loadBalanceTimeout = DbConnectionStringDefaults.LoadBalanceTimeout;
- private int _maxPoolSize = DbConnectionStringDefaults.MaxPoolSize;
- private int _minPoolSize = DbConnectionStringDefaults.MinPoolSize;
- private int _packetSize = DbConnectionStringDefaults.PacketSize;
- private int _connectRetryCount = DbConnectionStringDefaults.ConnectRetryCount;
- private int _connectRetryInterval = DbConnectionStringDefaults.ConnectRetryInterval;
- private bool _asynchronousProcessing = DbConnectionStringDefaults.AsynchronousProcessing;
- private bool _connectionReset = DbConnectionStringDefaults.ConnectionReset;
- private bool _contextConnection = DbConnectionStringDefaults.ContextConnection;
- private bool _encrypt = DbConnectionStringDefaults.Encrypt;
- private bool _trustServerCertificate = DbConnectionStringDefaults.TrustServerCertificate;
- private bool _enlist = DbConnectionStringDefaults.Enlist;
- private bool _integratedSecurity = DbConnectionStringDefaults.IntegratedSecurity;
- private bool _multipleActiveResultSets = DbConnectionStringDefaults.MultipleActiveResultSets;
- private bool _multiSubnetFailover = DbConnectionStringDefaults.MultiSubnetFailover;
- private bool _transparentNetworkIPResolution= DbConnectionStringDefaults.TransparentNetworkIPResolution;
- private bool _persistSecurityInfo = DbConnectionStringDefaults.PersistSecurityInfo;
- private bool _pooling = DbConnectionStringDefaults.Pooling;
- private bool _replication = DbConnectionStringDefaults.Replication;
- private bool _userInstance = DbConnectionStringDefaults.UserInstance;
- private SqlAuthenticationMethod _authentication = DbConnectionStringDefaults.Authentication;
- private SqlConnectionColumnEncryptionSetting _columnEncryptionSetting = DbConnectionStringDefaults.ColumnEncryptionSetting;
- static SqlConnectionStringBuilder() {
- string[] validKeywords = new string[KeywordsCount];
- validKeywords[(int)Keywords.ApplicationIntent] = DbConnectionStringKeywords.ApplicationIntent;
- validKeywords[(int)Keywords.ApplicationName] = DbConnectionStringKeywords.ApplicationName;
- validKeywords[(int)Keywords.AsynchronousProcessing] = DbConnectionStringKeywords.AsynchronousProcessing;
- validKeywords[(int)Keywords.AttachDBFilename] = DbConnectionStringKeywords.AttachDBFilename;
- validKeywords[(int)Keywords.ConnectionReset] = DbConnectionStringKeywords.ConnectionReset;
- validKeywords[(int)Keywords.ContextConnection] = DbConnectionStringKeywords.ContextConnection;
- validKeywords[(int)Keywords.ConnectTimeout] = DbConnectionStringKeywords.ConnectTimeout;
- validKeywords[(int)Keywords.CurrentLanguage] = DbConnectionStringKeywords.CurrentLanguage;
- validKeywords[(int)Keywords.DataSource] = DbConnectionStringKeywords.DataSource;
- validKeywords[(int)Keywords.Encrypt] = DbConnectionStringKeywords.Encrypt;
- validKeywords[(int)Keywords.Enlist] = DbConnectionStringKeywords.Enlist;
- validKeywords[(int)Keywords.FailoverPartner] = DbConnectionStringKeywords.FailoverPartner;
- validKeywords[(int)Keywords.InitialCatalog] = DbConnectionStringKeywords.InitialCatalog;
- validKeywords[(int)Keywords.IntegratedSecurity] = DbConnectionStringKeywords.IntegratedSecurity;
- validKeywords[(int)Keywords.LoadBalanceTimeout] = DbConnectionStringKeywords.LoadBalanceTimeout;
- validKeywords[(int)Keywords.MaxPoolSize] = DbConnectionStringKeywords.MaxPoolSize;
- validKeywords[(int)Keywords.MinPoolSize] = DbConnectionStringKeywords.MinPoolSize;
- validKeywords[(int)Keywords.MultipleActiveResultSets] = DbConnectionStringKeywords.MultipleActiveResultSets;
- validKeywords[(int)Keywords.MultiSubnetFailover] = DbConnectionStringKeywords.MultiSubnetFailover;
- validKeywords[(int)Keywords.TransparentNetworkIPResolution] = DbConnectionStringKeywords.TransparentNetworkIPResolution;
- // validKeywords[(int)Keywords.NamedConnection] = DbConnectionStringKeywords.NamedConnection;
- validKeywords[(int)Keywords.NetworkLibrary] = DbConnectionStringKeywords.NetworkLibrary;
- validKeywords[(int)Keywords.PacketSize] = DbConnectionStringKeywords.PacketSize;
- validKeywords[(int)Keywords.Password] = DbConnectionStringKeywords.Password;
- validKeywords[(int)Keywords.PersistSecurityInfo] = DbConnectionStringKeywords.PersistSecurityInfo;
- validKeywords[(int)Keywords.Pooling] = DbConnectionStringKeywords.Pooling;
- validKeywords[(int)Keywords.Replication] = DbConnectionStringKeywords.Replication;
- validKeywords[(int)Keywords.TransactionBinding] = DbConnectionStringKeywords.TransactionBinding;
- validKeywords[(int)Keywords.TrustServerCertificate] = DbConnectionStringKeywords.TrustServerCertificate;
- validKeywords[(int)Keywords.TypeSystemVersion] = DbConnectionStringKeywords.TypeSystemVersion;
- validKeywords[(int)Keywords.UserID] = DbConnectionStringKeywords.UserID;
- validKeywords[(int)Keywords.UserInstance] = DbConnectionStringKeywords.UserInstance;
- validKeywords[(int)Keywords.WorkstationID] = DbConnectionStringKeywords.WorkstationID;
- validKeywords[(int)Keywords.ConnectRetryCount] = DbConnectionStringKeywords.ConnectRetryCount;
- validKeywords[(int)Keywords.ConnectRetryInterval] = DbConnectionStringKeywords.ConnectRetryInterval;
- validKeywords[(int)Keywords.Authentication] = DbConnectionStringKeywords.Authentication;
- validKeywords[(int)Keywords.ColumnEncryptionSetting] = DbConnectionStringKeywords.ColumnEncryptionSetting;
- _validKeywords = validKeywords;
- Dictionary<string, Keywords> hash = new Dictionary<string, Keywords>(KeywordsCount + SqlConnectionString.SynonymCount, StringComparer.OrdinalIgnoreCase);
- hash.Add(DbConnectionStringKeywords.ApplicationIntent, Keywords.ApplicationIntent);
- hash.Add(DbConnectionStringKeywords.ApplicationName, Keywords.ApplicationName);
- hash.Add(DbConnectionStringKeywords.AsynchronousProcessing, Keywords.AsynchronousProcessing);
- hash.Add(DbConnectionStringKeywords.AttachDBFilename, Keywords.AttachDBFilename);
- hash.Add(DbConnectionStringKeywords.ConnectTimeout, Keywords.ConnectTimeout);
- hash.Add(DbConnectionStringKeywords.ConnectionReset, Keywords.ConnectionReset);
- hash.Add(DbConnectionStringKeywords.ContextConnection, Keywords.ContextConnection);
- hash.Add(DbConnectionStringKeywords.CurrentLanguage, Keywords.CurrentLanguage);
- hash.Add(DbConnectionStringKeywords.DataSource, Keywords.DataSource);
- hash.Add(DbConnectionStringKeywords.Encrypt, Keywords.Encrypt);
- hash.Add(DbConnectionStringKeywords.Enlist, Keywords.Enlist);
- hash.Add(DbConnectionStringKeywords.FailoverPartner, Keywords.FailoverPartner);
- hash.Add(DbConnectionStringKeywords.InitialCatalog, Keywords.InitialCatalog);
- hash.Add(DbConnectionStringKeywords.IntegratedSecurity, Keywords.IntegratedSecurity);
- hash.Add(DbConnectionStringKeywords.LoadBalanceTimeout, Keywords.LoadBalanceTimeout);
- hash.Add(DbConnectionStringKeywords.MultipleActiveResultSets, Keywords.MultipleActiveResultSets);
- hash.Add(DbConnectionStringKeywords.MaxPoolSize, Keywords.MaxPoolSize);
- hash.Add(DbConnectionStringKeywords.MinPoolSize, Keywords.MinPoolSize);
- hash.Add(DbConnectionStringKeywords.MultiSubnetFailover, Keywords.MultiSubnetFailover);
- hash.Add(DbConnectionStringKeywords.TransparentNetworkIPResolution, Keywords.TransparentNetworkIPResolution);
- // hash.Add(DbConnectionStringKeywords.NamedConnection, Keywords.NamedConnection);
- hash.Add(DbConnectionStringKeywords.NetworkLibrary, Keywords.NetworkLibrary);
- hash.Add(DbConnectionStringKeywords.PacketSize, Keywords.PacketSize);
- hash.Add(DbConnectionStringKeywords.Password, Keywords.Password);
- hash.Add(DbConnectionStringKeywords.PersistSecurityInfo, Keywords.PersistSecurityInfo);
- hash.Add(DbConnectionStringKeywords.Pooling, Keywords.Pooling);
- hash.Add(DbConnectionStringKeywords.Replication, Keywords.Replication);
- hash.Add(DbConnectionStringKeywords.TransactionBinding, Keywords.TransactionBinding);
- hash.Add(DbConnectionStringKeywords.TrustServerCertificate, Keywords.TrustServerCertificate);
- hash.Add(DbConnectionStringKeywords.TypeSystemVersion, Keywords.TypeSystemVersion);
- hash.Add(DbConnectionStringKeywords.UserID, Keywords.UserID);
- hash.Add(DbConnectionStringKeywords.UserInstance, Keywords.UserInstance);
- hash.Add(DbConnectionStringKeywords.WorkstationID, Keywords.WorkstationID);
- hash.Add(DbConnectionStringKeywords.ConnectRetryCount, Keywords.ConnectRetryCount);
- hash.Add(DbConnectionStringKeywords.ConnectRetryInterval, Keywords.ConnectRetryInterval);
- hash.Add(DbConnectionStringKeywords.Authentication, Keywords.Authentication);
- hash.Add(DbConnectionStringKeywords.ColumnEncryptionSetting, Keywords.ColumnEncryptionSetting);
- hash.Add(DbConnectionStringSynonyms.APP, Keywords.ApplicationName);
- hash.Add(DbConnectionStringSynonyms.Async, Keywords.AsynchronousProcessing);
- hash.Add(DbConnectionStringSynonyms.EXTENDEDPROPERTIES, Keywords.AttachDBFilename);
- hash.Add(DbConnectionStringSynonyms.INITIALFILENAME, Keywords.AttachDBFilename);
- hash.Add(DbConnectionStringSynonyms.CONNECTIONTIMEOUT, Keywords.ConnectTimeout);
- hash.Add(DbConnectionStringSynonyms.TIMEOUT, Keywords.ConnectTimeout);
- hash.Add(DbConnectionStringSynonyms.LANGUAGE, Keywords.CurrentLanguage);
- hash.Add(DbConnectionStringSynonyms.ADDR, Keywords.DataSource);
- hash.Add(DbConnectionStringSynonyms.ADDRESS, Keywords.DataSource);
- hash.Add(DbConnectionStringSynonyms.NETWORKADDRESS, Keywords.DataSource);
- hash.Add(DbConnectionStringSynonyms.SERVER, Keywords.DataSource);
- hash.Add(DbConnectionStringSynonyms.DATABASE, Keywords.InitialCatalog);
- hash.Add(DbConnectionStringSynonyms.TRUSTEDCONNECTION, Keywords.IntegratedSecurity);
- hash.Add(DbConnectionStringSynonyms.ConnectionLifetime, Keywords.LoadBalanceTimeout);
- hash.Add(DbConnectionStringSynonyms.NET, Keywords.NetworkLibrary);
- hash.Add(DbConnectionStringSynonyms.NETWORK, Keywords.NetworkLibrary);
- hash.Add(DbConnectionStringSynonyms.Pwd, Keywords.Password);
- hash.Add(DbConnectionStringSynonyms.PERSISTSECURITYINFO, Keywords.PersistSecurityInfo);
- hash.Add(DbConnectionStringSynonyms.UID, Keywords.UserID);
- hash.Add(DbConnectionStringSynonyms.User, Keywords.UserID);
- hash.Add(DbConnectionStringSynonyms.WSID, Keywords.WorkstationID);
- Debug.Assert((KeywordsCount + SqlConnectionString.SynonymCount) == hash.Count, "initial expected size is incorrect");
- _keywords = hash;
- }
- public SqlConnectionStringBuilder() : this((string)null) {
- }
- public SqlConnectionStringBuilder(string connectionString) : base() {
- if (!ADP.IsEmpty(connectionString)) {
- ConnectionString = connectionString;
- }
- }
- public override object this[string keyword] {
- get {
- Keywords index = GetIndex(keyword);
- return GetAt(index);
- }
- set {
- if (null != value) {
- Keywords index = GetIndex(keyword);
- switch(index) {
- case Keywords.ApplicationIntent: this.ApplicationIntent = ConvertToApplicationIntent(keyword, value); break;
- case Keywords.ApplicationName: ApplicationName = ConvertToString(value); break;
- case Keywords.AttachDBFilename: AttachDBFilename = ConvertToString(value); break;
- case Keywords.CurrentLanguage: CurrentLanguage = ConvertToString(value); break;
- case Keywords.DataSource: DataSource = ConvertToString(value); break;
- case Keywords.FailoverPartner: FailoverPartner = ConvertToString(value); break;
- case Keywords.InitialCatalog: InitialCatalog = ConvertToString(value); break;
- // case Keywords.NamedConnection: NamedConnection = ConvertToString(value); break;
- case Keywords.NetworkLibrary: NetworkLibrary = ConvertToString(value); break;
- case Keywords.Password: Password = ConvertToString(value); break;
- case Keywords.UserID: UserID = ConvertToString(value); break;
- case Keywords.TransactionBinding: TransactionBinding = ConvertToString(value); break;
- case Keywords.TypeSystemVersion: TypeSystemVersion = ConvertToString(value); break;
- case Keywords.WorkstationID: WorkstationID = ConvertToString(value); break;
- case Keywords.ConnectTimeout: ConnectTimeout = ConvertToInt32(value); break;
- case Keywords.LoadBalanceTimeout: LoadBalanceTimeout = ConvertToInt32(value); break;
- case Keywords.MaxPoolSize: MaxPoolSize = ConvertToInt32(value); break;
- case Keywords.MinPoolSize: MinPoolSize = ConvertToInt32(value); break;
- case Keywords.PacketSize: PacketSize = ConvertToInt32(value); break;
- case Keywords.IntegratedSecurity: IntegratedSecurity = ConvertToIntegratedSecurity(value); break;
- case Keywords.Authentication: Authentication = ConvertToAuthenticationType(keyword, value); break;
- case Keywords.ColumnEncryptionSetting: ColumnEncryptionSetting = ConvertToColumnEncryptionSetting(keyword, value); break;
- case Keywords.AsynchronousProcessing: AsynchronousProcessing = ConvertToBoolean(value); break;
- #pragma warning disable 618 // Obsolete ConnectionReset
- case Keywords.ConnectionReset: ConnectionReset = ConvertToBoolean(value); break;
- #pragma warning restore 618
- case Keywords.ContextConnection: ContextConnection = ConvertToBoolean(value); break;
- case Keywords.Encrypt: Encrypt = ConvertToBoolean(value); break;
- case Keywords.TrustServerCertificate: TrustServerCertificate = ConvertToBoolean(value); break;
- case Keywords.Enlist: Enlist = ConvertToBoolean(value); break;
- case Keywords.MultipleActiveResultSets: MultipleActiveResultSets = ConvertToBoolean(value); break;
- case Keywords.MultiSubnetFailover: MultiSubnetFailover = ConvertToBoolean(value); break;
- case Keywords.TransparentNetworkIPResolution: TransparentNetworkIPResolution = ConvertToBoolean(value); break;
- case Keywords.PersistSecurityInfo: PersistSecurityInfo = ConvertToBoolean(value); break;
- case Keywords.Pooling: Pooling = ConvertToBoolean(value); break;
- case Keywords.Replication: Replication = ConvertToBoolean(value); break;
- case Keywords.UserInstance: UserInstance = ConvertToBoolean(value); break;
- case Keywords.ConnectRetryCount: ConnectRetryCount = ConvertToInt32(value); break;
- case Keywords.ConnectRetryInterval: ConnectRetryInterval = ConvertToInt32(value); break;
- default:
- Debug.Assert(false, "unexpected keyword");
- throw ADP.KeywordNotSupported(keyword);
- }
- }
- else {
- Remove(keyword);
- }
- }
- }
- [DisplayName(DbConnectionStringKeywords.ApplicationIntent)]
- [ResCategoryAttribute(Res.DataCategory_Initialization)]
- [ResDescriptionAttribute(Res.DbConnectionString_ApplicationIntent)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public ApplicationIntent ApplicationIntent {
- get { return _applicationIntent; }
- set {
- if (!DbConnectionStringBuilderUtil.IsValidApplicationIntentValue(value)) {
- throw ADP.InvalidEnumerationValue(typeof(ApplicationIntent), (int)value);
- }
- SetApplicationIntentValue(value);
- _applicationIntent = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.ApplicationName)]
- [ResCategoryAttribute(Res.DataCategory_Context)]
- [ResDescriptionAttribute(Res.DbConnectionString_ApplicationName)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string ApplicationName {
- get { return _applicationName; }
- set {
- SetValue(DbConnectionStringKeywords.ApplicationName, value);
- _applicationName = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.AsynchronousProcessing)]
- [ResCategoryAttribute(Res.DataCategory_Initialization)]
- [ResDescriptionAttribute(Res.DbConnectionString_AsynchronousProcessing)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool AsynchronousProcessing {
- get { return _asynchronousProcessing; }
- set {
- SetValue(DbConnectionStringKeywords.AsynchronousProcessing, value);
- _asynchronousProcessing = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.AttachDBFilename)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_AttachDBFilename)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- //
- [Editor("System.Windows.Forms.Design.FileNameEditor, " + AssemblyRef.SystemDesign, "System.Drawing.Design.UITypeEditor, " + AssemblyRef.SystemDrawing)]
- public string AttachDBFilename {
- get { return _attachDBFilename; }
- set {
- SetValue(DbConnectionStringKeywords.AttachDBFilename, value);
- _attachDBFilename = value;
- }
- }
- [Browsable(false)]
- [DisplayName(DbConnectionStringKeywords.ConnectionReset)]
- [Obsolete("ConnectionReset has been deprecated. SqlConnection will ignore the 'connection reset' keyword and always reset the connection")] // SQLPT 41700
- [ResCategoryAttribute(Res.DataCategory_Pooling)]
- [ResDescriptionAttribute(Res.DbConnectionString_ConnectionReset)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool ConnectionReset {
- get { return _connectionReset; }
- set {
- SetValue(DbConnectionStringKeywords.ConnectionReset, value);
- _connectionReset = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.ContextConnection)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_ContextConnection)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool ContextConnection {
- get { return _contextConnection; }
- set {
- SetValue(DbConnectionStringKeywords.ContextConnection, value);
- _contextConnection = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.ConnectTimeout)]
- [ResCategoryAttribute(Res.DataCategory_Initialization)]
- [ResDescriptionAttribute(Res.DbConnectionString_ConnectTimeout)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int ConnectTimeout {
- get { return _connectTimeout; }
- set {
- if (value < 0) {
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.ConnectTimeout);
- }
- SetValue(DbConnectionStringKeywords.ConnectTimeout, value);
- _connectTimeout = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.CurrentLanguage)]
- [ResCategoryAttribute(Res.DataCategory_Initialization)]
- [ResDescriptionAttribute(Res.DbConnectionString_CurrentLanguage)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string CurrentLanguage {
- get { return _currentLanguage; }
- set {
- SetValue(DbConnectionStringKeywords.CurrentLanguage, value);
- _currentLanguage = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.DataSource)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_DataSource)]
- [RefreshProperties(RefreshProperties.All)]
- [TypeConverter(typeof(SqlDataSourceConverter))]
- public string DataSource {
- get { return _dataSource; }
- set {
- SetValue(DbConnectionStringKeywords.DataSource, value);
- _dataSource = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.Encrypt)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_Encrypt)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool Encrypt {
- get { return _encrypt; }
- set {
- SetValue(DbConnectionStringKeywords.Encrypt, value);
- _encrypt = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.ColumnEncryptionSetting)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.TCE_DbConnectionString_ColumnEncryptionSetting)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting {
- get { return _columnEncryptionSetting; }
- set {
- if (!DbConnectionStringBuilderUtil.IsValidColumnEncryptionSetting(value)) {
- throw ADP.InvalidEnumerationValue(typeof(SqlConnectionColumnEncryptionSetting), (int)value);
- }
- SetColumnEncryptionSettingValue(value);
- _columnEncryptionSetting = value;
- }
- }
-
- [DisplayName(DbConnectionStringKeywords.TrustServerCertificate)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_TrustServerCertificate)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool TrustServerCertificate {
- get { return _trustServerCertificate; }
- set {
- SetValue(DbConnectionStringKeywords.TrustServerCertificate, value);
- _trustServerCertificate = value;
- }
- }
-
- [DisplayName(DbConnectionStringKeywords.Enlist)]
- [ResCategoryAttribute(Res.DataCategory_Pooling)]
- [ResDescriptionAttribute(Res.DbConnectionString_Enlist)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool Enlist {
- get { return _enlist; }
- set {
- SetValue(DbConnectionStringKeywords.Enlist, value);
- _enlist = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.FailoverPartner)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_FailoverPartner)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- [TypeConverter(typeof(SqlDataSourceConverter))]
- public string FailoverPartner {
- get { return _failoverPartner; }
- set {
- SetValue(DbConnectionStringKeywords.FailoverPartner, value);
- _failoverPartner= value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.InitialCatalog)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_InitialCatalog)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- [TypeConverter(typeof(SqlInitialCatalogConverter))]
- public string InitialCatalog {
- get { return _initialCatalog; }
- set {
- SetValue(DbConnectionStringKeywords.InitialCatalog, value);
- _initialCatalog = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.IntegratedSecurity)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_IntegratedSecurity)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool IntegratedSecurity {
- get { return _integratedSecurity; }
- set {
- SetValue(DbConnectionStringKeywords.IntegratedSecurity, value);
- _integratedSecurity = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.Authentication)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_Authentication)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public SqlAuthenticationMethod Authentication {
- get { return _authentication; }
- set {
- if (!DbConnectionStringBuilderUtil.IsValidAuthenticationTypeValue(value)) {
- throw ADP.InvalidEnumerationValue(typeof(SqlAuthenticationMethod), (int)value);
- }
- SetAuthenticationValue(value);
- _authentication = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.LoadBalanceTimeout)]
- [ResCategoryAttribute(Res.DataCategory_Pooling)]
- [ResDescriptionAttribute(Res.DbConnectionString_LoadBalanceTimeout)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int LoadBalanceTimeout {
- get { return _loadBalanceTimeout; }
- set {
- if (value < 0) {
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.LoadBalanceTimeout);
- }
- SetValue(DbConnectionStringKeywords.LoadBalanceTimeout, value);
- _loadBalanceTimeout = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.MaxPoolSize)]
- [ResCategoryAttribute(Res.DataCategory_Pooling)]
- [ResDescriptionAttribute(Res.DbConnectionString_MaxPoolSize)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int MaxPoolSize {
- get { return _maxPoolSize; }
- set {
- if (value < 1) {
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.MaxPoolSize);
- }
- SetValue(DbConnectionStringKeywords.MaxPoolSize, value);
- _maxPoolSize = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.ConnectRetryCount)]
- [ResCategoryAttribute(Res.DataCategory_ConnectionResilency)]
- [ResDescriptionAttribute(Res.DbConnectionString_ConnectRetryCount)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int ConnectRetryCount {
- get { return _connectRetryCount; }
- set {
- if ((value < 0) || (value>255)) {
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.ConnectRetryCount);
- }
- SetValue(DbConnectionStringKeywords.ConnectRetryCount, value);
- _connectRetryCount = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.ConnectRetryInterval)]
- [ResCategoryAttribute(Res.DataCategory_ConnectionResilency)]
- [ResDescriptionAttribute(Res.DbConnectionString_ConnectRetryInterval)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int ConnectRetryInterval {
- get { return _connectRetryInterval; }
- set {
- if ((value < 1) || (value > 60)) {
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.ConnectRetryInterval);
- }
- SetValue(DbConnectionStringKeywords.ConnectRetryInterval, value);
- _connectRetryInterval = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.MinPoolSize)]
- [ResCategoryAttribute(Res.DataCategory_Pooling)]
- [ResDescriptionAttribute(Res.DbConnectionString_MinPoolSize)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int MinPoolSize {
- get { return _minPoolSize; }
- set {
- if (value < 0) {
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.MinPoolSize);
- }
- SetValue(DbConnectionStringKeywords.MinPoolSize, value);
- _minPoolSize = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.MultipleActiveResultSets)]
- [ResCategoryAttribute(Res.DataCategory_Advanced)]
- [ResDescriptionAttribute(Res.DbConnectionString_MultipleActiveResultSets)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool MultipleActiveResultSets {
- get { return _multipleActiveResultSets; }
- set {
- SetValue(DbConnectionStringKeywords.MultipleActiveResultSets, value);
- _multipleActiveResultSets = value;
- }
- }
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Justification = "Reviewed and Approved by UE")]
- [DisplayName(DbConnectionStringKeywords.MultiSubnetFailover)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_MultiSubnetFailover)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool MultiSubnetFailover {
- get { return _multiSubnetFailover; }
- set {
- SetValue(DbConnectionStringKeywords.MultiSubnetFailover, value);
- _multiSubnetFailover = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.TransparentNetworkIPResolution)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_TransparentNetworkIPResolution)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool TransparentNetworkIPResolution
- {
- get { return _transparentNetworkIPResolution; }
- set {
- SetValue(DbConnectionStringKeywords.TransparentNetworkIPResolution, value);
- _transparentNetworkIPResolution = value;
- }
- }
- /*
- [DisplayName(DbConnectionStringKeywords.NamedConnection)]
- [ResCategoryAttribute(Res.DataCategory_NamedConnectionString)]
- [ResDescriptionAttribute(Res.DbConnectionString_NamedConnection)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- [TypeConverter(typeof(NamedConnectionStringConverter))]
- public string NamedConnection {
- get { return _namedConnection; }
- set {
- SetValue(DbConnectionStringKeywords.NamedConnection, value);
- _namedConnection = value;
- }
- }
- */
- [DisplayName(DbConnectionStringKeywords.NetworkLibrary)]
- [ResCategoryAttribute(Res.DataCategory_Advanced)]
- [ResDescriptionAttribute(Res.DbConnectionString_NetworkLibrary)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- [TypeConverter(typeof(NetworkLibraryConverter))]
- public string NetworkLibrary {
- get { return _networkLibrary; }
- set {
- if (null != value) {
- switch(value.Trim().ToLower(CultureInfo.InvariantCulture)) {
- case SqlConnectionString.NETLIB.AppleTalk:
- value = SqlConnectionString.NETLIB.AppleTalk;
- break;
- case SqlConnectionString.NETLIB.BanyanVines:
- value = SqlConnectionString.NETLIB.BanyanVines;
- break;
- case SqlConnectionString.NETLIB.IPXSPX:
- value = SqlConnectionString.NETLIB.IPXSPX;
- break;
- case SqlConnectionString.NETLIB.Multiprotocol:
- value = SqlConnectionString.NETLIB.Multiprotocol;
- break;
- case SqlConnectionString.NETLIB.NamedPipes:
- value = SqlConnectionString.NETLIB.NamedPipes;
- break;
- case SqlConnectionString.NETLIB.SharedMemory:
- value = SqlConnectionString.NETLIB.SharedMemory;
- break;
- case SqlConnectionString.NETLIB.TCPIP:
- value = SqlConnectionString.NETLIB.TCPIP;
- break;
- case SqlConnectionString.NETLIB.VIA:
- value = SqlConnectionString.NETLIB.VIA;
- break;
- default:
- throw ADP.InvalidConnectionOptionValue(DbConnectionStringKeywords.NetworkLibrary);
- }
- }
- SetValue(DbConnectionStringKeywords.NetworkLibrary, value);
- _networkLibrary = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.PacketSize)]
- [ResCategoryAttribute(Res.DataCategory_Advanced)]
- [ResDescriptionAttribute(Res.DbConnectionString_PacketSize)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public int PacketSize {
- get { return _packetSize; }
- set {
- if ((value < TdsEnums.MIN_PACKET_SIZE) || (TdsEnums.MAX_PACKET_SIZE < value)) {
- throw SQL.InvalidPacketSizeValue();
- }
- SetValue(DbConnectionStringKeywords.PacketSize, value);
- _packetSize = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.Password)]
- [PasswordPropertyTextAttribute(true)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_Password)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string Password {
- get { return _password; }
- set {
- SetValue(DbConnectionStringKeywords.Password, value);
- _password = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.PersistSecurityInfo)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_PersistSecurityInfo)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool PersistSecurityInfo {
- get { return _persistSecurityInfo; }
- set {
- SetValue(DbConnectionStringKeywords.PersistSecurityInfo, value);
- _persistSecurityInfo = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.Pooling)]
- [ResCategoryAttribute(Res.DataCategory_Pooling)]
- [ResDescriptionAttribute(Res.DbConnectionString_Pooling)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool Pooling {
- get { return _pooling; }
- set {
- SetValue(DbConnectionStringKeywords.Pooling, value);
- _pooling = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.Replication)]
- [ResCategoryAttribute(Res.DataCategory_Replication)]
- [ResDescriptionAttribute(Res.DbConnectionString_Replication )]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool Replication {
- get { return _replication; }
- set {
- SetValue(DbConnectionStringKeywords.Replication, value);
- _replication = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.TransactionBinding)]
- [ResCategoryAttribute(Res.DataCategory_Advanced)]
- [ResDescriptionAttribute(Res.DbConnectionString_TransactionBinding)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string TransactionBinding {
- get { return _transactionBinding; }
- set {
- SetValue(DbConnectionStringKeywords.TransactionBinding, value);
- _transactionBinding = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.TypeSystemVersion)]
- [ResCategoryAttribute(Res.DataCategory_Advanced)]
- [ResDescriptionAttribute(Res.DbConnectionString_TypeSystemVersion)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string TypeSystemVersion {
- get { return _typeSystemVersion; }
- set {
- SetValue(DbConnectionStringKeywords.TypeSystemVersion, value);
- _typeSystemVersion = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.UserID)]
- [ResCategoryAttribute(Res.DataCategory_Security)]
- [ResDescriptionAttribute(Res.DbConnectionString_UserID)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string UserID {
- get { return _userID; }
- set {
- SetValue(DbConnectionStringKeywords.UserID, value);
- _userID = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.UserInstance)]
- [ResCategoryAttribute(Res.DataCategory_Source)]
- [ResDescriptionAttribute(Res.DbConnectionString_UserInstance)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public bool UserInstance {
- get { return _userInstance; }
- set {
- SetValue(DbConnectionStringKeywords.UserInstance, value);
- _userInstance = value;
- }
- }
- [DisplayName(DbConnectionStringKeywords.WorkstationID)]
- [ResCategoryAttribute(Res.DataCategory_Context)]
- [ResDescriptionAttribute(Res.DbConnectionString_WorkstationID)]
- [RefreshPropertiesAttribute(RefreshProperties.All)]
- public string WorkstationID {
- get { return _workstationID; }
- set {
- SetValue(DbConnectionStringKeywords.WorkstationID, value);
- _workstationID = value;
- }
- }
- public override bool IsFixedSize {
- get {
- return true;
- }
- }
- public override ICollection Keys {
- get {
- return new System.Data.Common.ReadOnlyCollection<string>(_validKeywords);
- }
- }
- public override ICollection Values {
- get {
- // written this way so if the ordering of Keywords & _validKeywords changes
- // this is one less place to maintain
- object[] values = new object[_validKeywords.Length];
- for(int i = 0; i < values.Length; ++i) {
- values[i] = GetAt((Keywords)i);
- }
- return new System.Data.Common.ReadOnlyCollection<object>(values);
- }
- }
- public override void Clear() {
- base.Clear();
- for(int i = 0; i < _validKeywords.Length; ++i) {
- Reset((Keywords)i);
- }
- }
- public override bool ContainsKey(string keyword) {
- ADP.CheckArgumentNull(keyword, "keyword");
- return _keywords.ContainsKey(keyword);
- }
- private static bool ConvertToBoolean(object value) {
- return DbConnectionStringBuilderUtil.ConvertToBoolean(value);
- }
- private static int ConvertToInt32(object value) {
- return DbConnectionStringBuilderUtil.ConvertToInt32(value);
- }
- private static bool ConvertToIntegratedSecurity(object value) {
- return DbConnectionStringBuilderUtil.ConvertToIntegratedSecurity(value);
- }
- private static string ConvertToString(object value) {
- return DbConnectionStringBuilderUtil.ConvertToString(value);
- }
- private static ApplicationIntent ConvertToApplicationIntent(string keyword, object value) {
- return DbConnectionStringBuilderUtil.ConvertToApplicationIntent(keyword, value);
- }
- private static SqlAuthenticationMethod ConvertToAuthenticationType(string keyword, object value) {
- return DbConnectionStringBuilderUtil.ConvertToAuthenticationType(keyword, value);
- }
- /// <summary>
- /// Convert to SqlConnectionColumnEncryptionSetting.
- /// </summary>
- /// <param name="keyword"></param>
- /// <param name="value"></param>
- private static SqlConnectionColumnEncryptionSetting ConvertToColumnEncryptionSetting(string keyword, object value) {
- return DbConnectionStringBuilderUtil.ConvertToColumnEncryptionSetting(keyword, value);
- }
- internal override string ConvertValueToString(object value) {
- if (value is SqlAuthenticationMethod) {
- return DbConnectionStringBuilderUtil.AuthenticationTypeToString((SqlAuthenticationMethod)value);
- }
- else {
- return base.ConvertValueToString(value);
- }
- }
- private object GetAt(Keywords index) {
- switch(index) {
- case Keywords.ApplicationIntent: return this.ApplicationIntent;
- case Keywords.ApplicationName: return ApplicationName;
- case Keywords.AsynchronousProcessing: return AsynchronousProcessing;
- case Keywords.AttachDBFilename: return AttachDBFilename;
- case Keywords.ConnectTimeout: return ConnectTimeout;
- #pragma warning disable 618 // Obsolete ConnectionReset
- case Keywords.ConnectionReset: return ConnectionReset;
- #pragma warning restore 618
- case Keywords.ContextConnection: return ContextConnection;
- case Keywords.CurrentLanguage: return CurrentLanguage;
- case Keywords.DataSource: return DataSource;
- case Keywords.Encrypt: return Encrypt;
- case Keywords.Enlist: return Enlist;
- case Keywords.FailoverPartner: return FailoverPartner;
- case Keywords.InitialCatalog: return InitialCatalog;
- case Keywords.IntegratedSecurity: return IntegratedSecurity;
- case Keywords.LoadBalanceTimeout: return LoadBalanceTimeout;
- case Keywords.MultipleActiveResultSets: return MultipleActiveResultSets;
- case Keywords.MaxPoolSize: return MaxPoolSize;
- case Keywords.MinPoolSize: return MinPoolSize;
- case Keywords.MultiSubnetFailover: return MultiSubnetFailover;
- case Keywords.TransparentNetworkIPResolution: return TransparentNetworkIPResolution;
- // case Keywords.NamedConnection: return NamedConnection;
- case Keywords.NetworkLibrary: return NetworkLibrary;
- case Keywords.PacketSize: return PacketSize;
- case Keywords.Password: return Password;
- case Keywords.PersistSecurityInfo: return PersistSecurityInfo;
- case Keywords.Pooling: return Pooling;
- case Keywords.Replication: return Replication;
- case Keywords.TransactionBinding: return TransactionBinding;
- case Keywords.TrustServerCertificate: return TrustServerCertificate;
- case Keywords.TypeSystemVersion: return TypeSystemVersion;
- case Keywords.UserID: return UserID;
- case Keywords.UserInstance: return UserInstance;
- case Keywords.WorkstationID: return WorkstationID;
- case Keywords.ConnectRetryCount: return ConnectRetryCount;
- case Keywords.ConnectRetryInterval: return ConnectRetryInterval;
- case Keywords.Authentication: return Authentication;
- case Keywords.ColumnEncryptionSetting: return ColumnEncryptionSetting;
- default:
- Debug.Assert(false, "unexpected keyword");
- throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
- }
- }
- private Keywords GetIndex(string keyword) {
- ADP.CheckArgumentNull(keyword, "keyword");
- Keywords index;
- if (_keywords.TryGetValue(keyword, out index)) {
- return index;
- }
- throw ADP.KeywordNotSupported(keyword);
- }
- protected override void GetProperties(Hashtable propertyDescriptors) {
- foreach(PropertyDescriptor reflected in TypeDescriptor.GetProperties(this, true)) {
- bool refreshOnChange = false;
- bool isReadonly = false;
- string displayName = reflected.DisplayName;
- // 'Password' & 'User ID' will be readonly if 'Integrated Security' is true
- if (DbConnectionStringKeywords.IntegratedSecurity == displayName) {
- refreshOnChange = true;
- isReadonly = reflected.IsReadOnly;
- }
- else if ((DbConnectionStringKeywords.Password == displayName) ||
- (DbConnectionStringKeywords.UserID == displayName)) {
- isReadonly = IntegratedSecurity;
- }
- else {
- continue;
- }
- Attribute[] attributes = GetAttributesFromCollection(reflected.Attributes);
- DbConnectionStringBuilderDescriptor descriptor = new DbConnectionStringBuilderDescriptor(reflected.Name,
- reflected.ComponentType, reflected.PropertyType, isReadonly, attributes);
- descriptor.RefreshOnChange = refreshOnChange;
- propertyDescriptors[displayName] = descriptor;
- }
- base.GetProperties(propertyDescriptors);
- }
- public override bool Remove(string keyword) {
- ADP.CheckArgumentNull(keyword, "keyword");
- Keywords index;
- if (_keywords.TryGetValue(keyword, out index)) {
- if (base.Remove(_validKeywords[(int)index])) {
- Reset(index);
- return true;
- }
- }
- return false;
- }
- private void Reset(Keywords index) {
- switch(index) {
- case Keywords.ApplicationIntent:
- _applicationIntent = DbConnectionStringDefaults.ApplicationIntent;
- break;
- case Keywords.ApplicationName:
- _applicationName = DbConnectionStringDefaults.ApplicationName;
- break;
- case Keywords.AsynchronousProcessing:
- _asynchronousProcessing = DbConnectionStringDefaults.AsynchronousProcessing;
- break;
- case Keywords.AttachDBFilename:
- _attachDBFilename = DbConnectionStringDefaults.AttachDBFilename;
- break;
- case Keywords.Authentication:
- _authentication = DbConnectionStringDefaults.Authentication;
- break;
- case Keywords.ConnectTimeout:
- _connectTimeout = DbConnectionStringDefaults.ConnectTimeout;
- break;
- case Keywords.ConnectionReset:
- _connectionReset = DbConnectionStringDefaults.ConnectionReset;
- break;
- case Keywords.ContextConnection:
- _contextConnection = DbConnectionStringDefaults.ContextConnection;
- break;
- case Keywords.CurrentLanguage:
- _currentLanguage = DbConnectionStringDefaults.CurrentLanguage;
- break;
- case Keywords.DataSource:
- _dataSource = DbConnectionStringDefaults.DataSource;
- break;
- case Keywords.Encrypt:
- _encrypt = DbConnectionStringDefaults.Encrypt;
- break;
- case Keywords.Enlist:
- _enlist = DbConnectionStringDefaults.Enlist;
- break;
- case Keywords.FailoverPartner:
- _failoverPartner = DbConnectionStringDefaults.FailoverPartner;
- break;
- case Keywords.InitialCatalog:
- _initialCatalog = DbConnectionStringDefaults.InitialCatalog;
- break;
- case Keywords.IntegratedSecurity:
- _integratedSecurity = DbConnectionStringDefaults.IntegratedSecurity;
- break;
- case Keywords.LoadBalanceTimeout:
- _loadBalanceTimeout = DbConnectionStringDefaults.LoadBalanceTimeout;
- break;
- case Keywords.MultipleActiveResultSets:
- _multipleActiveResultSets = DbConnectionStringDefaults.MultipleActiveResultSets;
- break;
- case Keywords.MaxPoolSize:
- _maxPoolSize = DbConnectionStringDefaults.MaxPoolSize;
- break;
- case Keywords.MinPoolSize:
- _minPoolSize = DbConnectionStringDefaults.MinPoolSize;
- break;
- case Keywords.MultiSubnetFailover:
- _multiSubnetFailover = DbConnectionStringDefaults.MultiSubnetFailover;
- break;
- case Keywords.TransparentNetworkIPResolution:
- _transparentNetworkIPResolution = DbConnectionStringDefaults.TransparentNetworkIPResolution;
- break;
- // case Keywords.NamedConnection:
- // _namedConnection = DbConnectionStringDefaults.NamedConnection;
- // break;
- case Keywords.NetworkLibrary:
- _networkLibrary = DbConnectionStringDefaults.NetworkLibrary;
- break;
- case Keywords.PacketSize:
- _packetSize = DbConnectionStringDefaults.PacketSize;
- break;
- case Keywords.Password:
- _password = DbConnectionStringDefaults.Password;
- break;
- case Keywords.PersistSecurityInfo:
- _persistSecurityInfo = DbConnectionStringDefaults.PersistSecurityInfo;
- break;
- case Keywords.Pooling:
- _pooling = DbConnectionStringDefaults.Pooling;
- break;
- case Keywords.ConnectRetryCount:
- _connectRetryCount = DbConnectionStringDefaults.ConnectRetryCount;
- break;
- case Keywords.ConnectRetryInterval:
- _connectRetryInterval = DbConnectionStringDefaults.ConnectRetryInterval;
- break;
- case Keywords.Replication:
- _replication = DbConnectionStringDefaults.Replication;
- break;
- case Keywords.TransactionBinding:
- _transactionBinding = DbConnectionStringDefaults.TransactionBinding;
- break;
- case Keywords.TrustServerCertificate:
- _trustServerCertificate = DbConnectionStringDefaults.TrustServerCertificate;
- break;
- case Keywords.TypeSystemVersion:
- _typeSystemVersion = DbConnectionStringDefaults.TypeSystemVersion;
- break;
- case Keywords.UserID:
- _userID = DbConnectionStringDefaults.UserID;
- break;
- case Keywords.UserInstance:
- _userInstance = DbConnectionStringDefaults.UserInstance;
- break;
- case Keywords.WorkstationID:
- _workstationID = DbConnectionStringDefaults.WorkstationID;
- break;
- case Keywords.ColumnEncryptionSetting:
- _columnEncryptionSetting = DbConnectionStringDefaults.ColumnEncryptionSetting;
- break;
- default:
- Debug.Assert(false, "unexpected keyword");
- throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
- }
- }
- private void SetValue(string keyword, bool value) {
- base[keyword] = value.ToString((System.IFormatProvider)null);
- }
- private void SetValue(string keyword, int value) {
- base[keyword] = value.ToString((System.IFormatProvider)null);
- }
- private void SetValue(string keyword, string value) {
- ADP.CheckArgumentNull(value, keyword);
- base[keyword] = value;
- }
- private void SetApplicationIntentValue(ApplicationIntent value) {
- Debug.Assert(DbConnectionStringBuilderUtil.IsValidApplicationIntentValue(value), "Invalid value for ApplicationIntent");
- base[DbConnectionStringKeywords.ApplicationIntent] = DbConnectionStringBuilderUtil.ApplicationIntentToString(value);
- }
- private void SetAuthenticationValue(SqlAuthenticationMethod value) {
- Debug.Assert(DbConnectionStringBuilderUtil.IsValidAuthenticationTypeValue(value), "Invalid value for AuthenticationType");
- base[DbConnectionStringKeywords.Authentication] = DbConnectionStringBuilderUtil.AuthenticationTypeToString(value);
- }
- private void SetColumnEncryptionSettingValue(SqlConnectionColumnEncryptionSetting value) {
- Debug.Assert(DbConnectionStringBuilderUtil.IsValidColumnEncryptionSetting(value), "Invalid value for SqlConnectionColumnEncryptionSetting");
- base[DbConnectionStringKeywords.ColumnEncryptionSetting] = DbConnectionStringBuilderUtil.ColumnEncryptionSettingToString(value);
- }
- public override bool ShouldSerialize(string keyword) {
- ADP.CheckArgumentNull(keyword, "keyword");
- Keywords index;
- return _keywords.TryGetValue(keyword, out index) && base.ShouldSerialize(_validKeywords[(int)index]);
- }
- public override bool TryGetValue(string keyword, out object value) {
- Keywords index;
- if (_keywords.TryGetValue(keyword, out index)) {
- value = GetAt(index);
- return true;
- }
- value = null;
- return false;
- }
- private sealed class NetworkLibraryConverter : TypeConverter {
- // private const string AppleTalk = "Apple Talk (DBMSADSN)"; Invalid protocals
- // private const string BanyanVines = "Banyan VINES (DBMSVINN)";
- // private const string IPXSPX = "NWLink IPX/SPX (DBMSSPXN)";
- // private const string Multiprotocol = "Multiprotocol (DBMSRPCN)";
- private const string NamedPipes = "Named Pipes (DBNMPNTW)"; // valid protocols
- private const string SharedMemory = "Shared Memory (DBMSLPCN)";
- private const string TCPIP = "TCP/IP (DBMSSOCN)";
- private const string VIA = "VIA (DBMSGNET)";
- // these are correctly non-static, property grid will cache an instance
- private StandardValuesCollection _standardValues;
- // converter classes should have public ctor
- public NetworkLibraryConverter() {
- }
- public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
- // Only know how to convert from a string
- return ((typeof(string) == sourceType) || base.CanConvertFrom(context, sourceType));
- }
- public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) {
- string svalue = (value as string);
- if (null != svalue) {
- svalue = svalue.Trim();
- if (StringComparer.OrdinalIgnoreCase.Equals(svalue, NamedPipes)) {
- return SqlConnectionString.NETLIB.NamedPipes;
- }
- else if (StringComparer.OrdinalIgnoreCase.Equals(svalue, SharedMemory)) {
- return SqlConnectionString.NETLIB.SharedMemory;
- }
- else if (StringComparer.OrdinalIgnoreCase.Equals(svalue, TCPIP)) {
- return SqlConnectionString.NETLIB.TCPIP;
- }
- else if (StringComparer.OrdinalIgnoreCase.Equals(svalue, VIA)) {
- return SqlConnectionString.NETLIB.VIA;
- }
- else {
- return svalue;
- }
- }
- return base.ConvertFrom(context, culture, value);
- }
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
- return ((typeof(string) == destinationType) || base.CanConvertTo(context, destinationType));
- }
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) {
- string svalue = (value as string);
- if ((null != svalue) && (destinationType == typeof(string))) {
- switch(svalue.Trim().ToLower(CultureInfo.InvariantCulture)) {
- case SqlConnectionString.NETLIB.NamedPipes:
- return NamedPipes;
- case SqlConnectionString.NETLIB.SharedMemory:
- return SharedMemory;
- case SqlConnectionString.NETLIB.TCPIP:
- return TCPIP;
- case SqlConnectionString.NETLIB.VIA:
- return VIA;
- default:
- return svalue;
- }
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
- return true;
- }
- public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
- return false;
- }
- public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
- SqlConnectionStringBuilder constr = null;
- if (null != context) {
- constr = (context.Instance as SqlConnectionStringBuilder);
- }
- StandardValuesCollection standardValues = _standardValues;
- if (null == standardValues) {
- string[] names = new string[] {
- NamedPipes,
- SharedMemory,
- TCPIP,
- VIA,
- };
- standardValues = new StandardValuesCollection(names);
- _standardValues = standardValues;
- }
- return standardValues;
- }
- }
- private sealed class SqlDataSourceConverter : StringConverter {
- private StandardValuesCollection _standardValues;
- // converter classes should have public ctor
- public SqlDataSourceConverter() {
- }
- public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
- return true;
- }
- public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
- return false;
- }
- public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
- StandardValuesCollection dataSourceNames = _standardValues;
- if (null == _standardValues) {
- // Get the sources rowset for the SQLOLEDB enumerator
- DataTable table = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
- DataColumn serverName = table.Columns[System.Data.Sql.SqlDataSourceEnumerator.ServerName];
- DataColumn instanceName = table.Columns[System.Data.Sql.SqlDataSourceEnumerator.InstanceName];
- DataRowCollection rows = table.Rows;
- string[] serverNames = new string[rows.Count];
- for(int i = 0; i < serverNames.Length; ++i) {
- string server = rows[i][serverName] as string;
- string instance = rows[i][instanceName] as string;
- if ((null == instance) || (0 == instance.Length) || ("MSSQLSERVER" == instance)) {
- serverNames[i] = server;
- }
- else {
- serverNames[i] = server + @"\" + instance;
- }
- }
- Array.Sort<string>(serverNames);
- // Create the standard values collection that contains the sources
- dataSourceNames = new StandardValuesCollection(serverNames);
- _standardValues = dataSourceNames;
- }
- return dataSourceNames;
- }
- }
- private sealed class SqlInitialCatalogConverter : StringConverter {
- // converter classes should have public ctor
- public SqlInitialCatalogConverter() {
- }
- public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
- return GetStandardValuesSupportedInternal(context);
- }
- private bool GetStandardValuesSupportedInternal(ITypeDescriptorContext context) {
- // Only say standard values are supported if the connection string has enough
- // information set to instantiate a connection and retrieve a list of databases
- bool flag = false;
- if (null != context) {
- SqlConnectionStringBuilder constr = (context.Instance as SqlConnectionStringBuilder);
- if (null != constr) {
- if ((0 < constr.DataSource.Length) && (constr.IntegratedSecurity || (0 < constr.UserID.Length))) {
- flag = true;
- }
- }
- }
- return flag;
- }
- public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
- // Although theoretically this could be true, some people may want to just type in a name
- return false;
- }
- public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
- // There can only be standard values if the connection string is in a state that might
- // be able to instantiate a connection
- if (GetStandardValuesSupportedInternal(context)) {
- // Create an array list to store the database names
- List<string> values = new List<string>();
- try {
- SqlConnectionStringBuilder constr = (SqlConnectionStringBuilder)context.Instance;
- // Create a connection
- using(SqlConnection connection = new SqlConnection()) {
- // Create a basic connection string from current property values
- connection.ConnectionString = constr.ConnectionString;
- // Try to open the connection
- connection.Open();
- DataTable databaseTable = connection.GetSchema("DATABASES");
- foreach (DataRow row in databaseTable.Rows) {
- string dbName = (string)row["database_name"];
- values.Add(dbName);
- }
- }
- }
- catch(SqlException e) {
- ADP.TraceExceptionWithoutRethrow(e);
- // silently fail
- }
- // Return values as a StandardValuesCollection
- return new StandardValuesCollection(values);
- }
- return null;
- }
- }
- sealed internal class SqlConnectionStringBuilderConverter : ExpandableObjectConverter {
- // converter classes should have public ctor
- public SqlConnectionStringBuilderConverter() {
- }
- override public bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
- if (typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor) == destinationType) {
- return true;
- }
- return base.CanConvertTo(context, destinationType);
- }
- override public object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
- if (destinationType == null) {
- throw ADP.ArgumentNull("destinationType");
- }
- if (typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor) == destinationType) {
- SqlConnectionStringBuilder obj = (value as SqlConnectionStringBuilder);
- if (null != obj) {
- return ConvertToInstanceDescriptor(obj);
- }
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
- private System.ComponentModel.Design.Serialization.InstanceDescriptor ConvertToInstanceDescriptor(SqlConnectionStringBuilder options) {
- Type[] ctorParams = new Type[] { typeof(string) };
- object[] ctorValues = new object[] { options.ConnectionString };
- System.Reflection.ConstructorInfo ctor = typeof(SqlConnectionStringBuilder).GetConstructor(ctorParams);
- return new System.ComponentModel.Design.Serialization.InstanceDescriptor(ctor, ctorValues);
- }
- }
- }
- }
|