/// <summary> /// Opens a database connection with the property settings specified by the /// <see cref="Npgsql.NpgsqlConnection.ConnectionString">ConnectionString</see>. /// </summary> public override void Open() { CheckConnectionClosed(); NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "Open"); // Check if there is any missing argument. if (!settings.ContainsKey(Keywords.Host)) { throw new ArgumentException(resman.GetString("Exception_MissingConnStrArg"), NpgsqlConnectionStringBuilder.GetKeyName(Keywords.Host)); } if (!settings.ContainsKey(Keywords.UserName) && !settings.ContainsKey(Keywords.IntegratedSecurity)) { throw new ArgumentException(resman.GetString("Exception_MissingConnStrArg"), NpgsqlConnectionStringBuilder.GetKeyName(Keywords.UserName)); } // Get a Connector. The connector returned is guaranteed to be connected and ready to go. connector = NpgsqlConnectorPool.ConnectorPoolMgr.RequestConnector(this); connector.Notice += NoticeDelegate; connector.Notification += NotificationDelegate; if (SyncNotification) { connector.AddNotificationThread(); } if (Enlist) { Promotable.Enlist(Transaction.Current); } }
/// <summary> /// Opens a database connection with the property settings specified by the /// <see cref="Npgsql.NpgsqlConnection.ConnectionString">ConnectionString</see>. /// </summary> public override void Open() { // If we're postponing a close (see doc on this variable), the connection is already // open and can be silently reused if (_postponingClose) { return; } CheckConnectionClosed(); NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "Open"); // Check if there is any missing argument. if (!settings.ContainsKey(Keywords.Host)) { throw new ArgumentException(resman.GetString("Exception_MissingConnStrArg"), NpgsqlConnectionStringBuilder.GetKeyName(Keywords.Host)); } if (!settings.ContainsKey(Keywords.UserName) && !settings.ContainsKey(Keywords.IntegratedSecurity)) { throw new ArgumentException(resman.GetString("Exception_MissingConnStrArg"), NpgsqlConnectionStringBuilder.GetKeyName(Keywords.UserName)); } // Get a Connector, either from the pool or creating one ourselves. if (Pooling) { connector = NpgsqlConnectorPool.ConnectorPoolMgr.RequestConnector(this); } else { connector = new NpgsqlConnector(this); connector.RemoteCertificateValidationCallback += RemoteCertificateValidationCallback; // connector.ProvideClientCertificatesCallback += ProvideClientCertificatesCallbackDelegate; // connector.CertificateSelectionCallback += CertificateSelectionCallbackDelegate; // connector.CertificateValidationCallback += CertificateValidationCallbackDelegate; // connector.PrivateKeySelectionCallback += PrivateKeySelectionCallbackDelegate; // connector.ValidateRemoteCertificateCallback += ValidateRemoteCertificateCallbackDelegate; connector.Open(); } connector.Notice += NoticeDelegate; connector.Notification += NotificationDelegate; if (SyncNotification) { connector.AddNotificationThread(); } if (Enlist) { Promotable.Enlist(Transaction.Current); } this.OnStateChange(new StateChangeEventArgs(ConnectionState.Closed, ConnectionState.Open)); }
/// <summary> /// Opens a database connection with the property settings specified by the /// <see cref="NpgsqlConnection.ConnectionString">ConnectionString</see>. /// </summary> public override void Open() { // If we're postponing a close (see doc on this variable), the connection is already // open and can be silently reused if (_postponingClose) { return; } CheckConnectionClosed(); _log.Debug("Opening connnection"); // Check if there is any missing argument. if (!_settings.ContainsKey(Keywords.Host)) { throw new ArgumentException(L10N.MissingConnStrArg, Keywords.Host.ToString()); } if (!_settings.ContainsKey(Keywords.UserName) && !_settings.ContainsKey(Keywords.IntegratedSecurity)) { throw new ArgumentException(L10N.MissingConnStrArg, Keywords.UserName.ToString()); } // Get a Connector, either from the pool or creating one ourselves. if (Pooling) { Connector = NpgsqlConnectorPool.ConnectorPoolMgr.RequestConnector(this); } else { Connector = new NpgsqlConnector(this); Connector.ProvideClientCertificatesCallback += ProvideClientCertificatesCallbackDelegate; Connector.CertificateSelectionCallback += CertificateSelectionCallbackDelegate; Connector.CertificateValidationCallback += CertificateValidationCallbackDelegate; Connector.PrivateKeySelectionCallback += PrivateKeySelectionCallbackDelegate; Connector.ValidateRemoteCertificateCallback += ValidateRemoteCertificateCallbackDelegate; Connector.Open(); } Connector.Notice += NoticeDelegate; Connector.Notification += NotificationDelegate; if (SyncNotification) { // Disable async notifications for now //Connector.AddNotificationThread(); } if (Enlist) { Promotable.Enlist(Transaction.Current); } OnStateChange(new StateChangeEventArgs(ConnectionState.Closed, ConnectionState.Open)); }
public static string CreateDbLinkConnection(IDbConnectionInfo connectionInfo) { var builder = new NpgsqlConnectionStringBuilder(connectionInfo.ConnectionString); var dbLink = new StringBuilder(); if (builder.ContainsKey(PgDbConnectionInfo.ServerAddressKey)) { if (dbLink.Length > 0) dbLink.Append(" "); dbLink.Append("host=").Append(builder[PgDbConnectionInfo.ServerAddressKey]); } if (builder.ContainsKey(PgDbConnectionInfo.ServerPortKey)) { if (dbLink.Length > 0) dbLink.Append(" "); dbLink.Append("port=").Append(builder[PgDbConnectionInfo.ServerPortKey]); } if (builder.ContainsKey(PgDbConnectionInfo.DatabaseNameKey)) { if (dbLink.Length > 0) dbLink.Append(" "); dbLink.Append("dbname=").Append(builder[PgDbConnectionInfo.DatabaseNameKey]); } if (builder.ContainsKey(PgDbConnectionInfo.UserNameKey)) { if (dbLink.Length > 0) dbLink.Append(" "); dbLink.Append("user="******" "); dbLink.Append("user="******" "); dbLink.Append("password=").Append(builder[PgDbConnectionInfo.PasswordKey]); } return dbLink.ToString(); }