/// <summary> /// Gets the location of a <see cref="NpgsqlParameter">NpgsqlParameter</see> in the collection. /// </summary> /// <param name="value">The value of the <see cref="NpgsqlParameter">NpgsqlParameter</see> object to find.</param> /// <returns>The zero-based index of the <see cref="NpgsqlParameter">NpgsqlParameter</see> object in the collection.</returns> public override int IndexOf(object value) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "IndexOf", value); CheckType(value); return(this.InternalList.IndexOf((NpgsqlParameter)value)); }
/// <summary> /// Copies <see cref="NpgsqlParameter">NpgsqlParameter</see> objects from the <see cref="NpgsqlParameterCollection">NpgsqlParameterCollection</see> to the specified array. /// </summary> /// <param name="array">An <see cref="System.Array">Array</see> to which to copy the <see cref="NpgsqlParameter">NpgsqlParameter</see> objects in the collection.</param> /// <param name="index">The starting index of the array.</param> public override void CopyTo(Array array, int index) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "CopyTo", array, index); (InternalList as ICollection).CopyTo(array, index); IRaiseItemChangedEvents x = InternalList as IRaiseItemChangedEvents; }
/// <summary> /// Gets the location of the <see cref="NpgsqlParameter">NpgsqlParameter</see> in the collection with a specific parameter name. /// </summary> /// <param name="parameterName">The name of the <see cref="NpgsqlParameter">NpgsqlParameter</see> object to find.</param> /// <returns>The zero-based location of the <see cref="NpgsqlParameter">NpgsqlParameter</see> in the collection.</returns> public override int IndexOf(string parameterName) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "IndexOf", parameterName); int retIndex; int scanIndex; if ((parameterName[0] == ':') || (parameterName[0] == '@')) { parameterName = parameterName.Remove(0, 1); } // Using a dictionary is much faster for 5 or more items if (this.InternalList.Count >= 5) { if (this.lookup == null) { this.lookup = new Dictionary <string, int>(); for (scanIndex = 0; scanIndex < this.InternalList.Count; scanIndex++) { var item = this.InternalList[scanIndex]; // Store only the first of each distinct value if (!this.lookup.ContainsKey(item.CleanName)) { this.lookup.Add(item.CleanName, scanIndex); } } } // Try to access the case sensitive parameter name first if (this.lookup.TryGetValue(parameterName, out retIndex)) { return(retIndex); } // Case sensitive lookup failed, generate a case insensitive lookup if (this.lookupIgnoreCase == null) { this.lookupIgnoreCase = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); for (scanIndex = 0; scanIndex < this.InternalList.Count; scanIndex++) { var item = this.InternalList[scanIndex]; // Store only the first of each distinct value if (!this.lookupIgnoreCase.ContainsKey(item.CleanName)) { this.lookupIgnoreCase.Add(item.CleanName, scanIndex); } } } // Then try to access the case insensitive parameter name if (this.lookupIgnoreCase.TryGetValue(parameterName, out retIndex)) { return(retIndex); } return(-1); } retIndex = -1; // Scan until a case insensitive match is found, and save its index for possible return. // Items that don't match loosely cannot possibly match exactly. for (scanIndex = 0; scanIndex < this.InternalList.Count; scanIndex++) { var item = this.InternalList[scanIndex]; if (string.Compare(parameterName, item.CleanName, StringComparison.InvariantCultureIgnoreCase) == 0) { retIndex = scanIndex; break; } } // Then continue the scan until a case sensitive match is found, and return it. // If a case insensitive match was found, it will be re-checked for an exact match. for ( ; scanIndex < this.InternalList.Count; scanIndex++) { var item = this.InternalList[scanIndex]; if (item.CleanName == parameterName) { return(scanIndex); } } // If a case insensitive match was found, it will be returned here. return(retIndex); }
/// <summary> /// Removes the specified <see cref="NpgsqlParameter">NpgsqlParameter</see> from the collection. /// </summary> /// <param name="oValue">The <see cref="NpgsqlParameter">NpgsqlParameter</see> to remove from the collection.</param> public override void Remove(object oValue) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "Remove", oValue); CheckType(oValue); Remove(oValue as NpgsqlParameter); }
/// <summary> /// Sends the <see cref="NpgsqlCommand.CommandText">CommandText</see> to /// the <see cref="NpgsqlConnection">Connection</see> and builds a /// <see cref="NpgsqlDataReader">NpgsqlDataReader</see>. /// </summary> /// <returns>A <see cref="NpgsqlDataReader">NpgsqlDataReader</see> object.</returns> public new NpgsqlDataReader ExecuteReader() { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "ExecuteReader"); return(ExecuteReader(CommandBehavior.Default)); }
/// <summary> /// Gets a value indicating whether a <see cref="NpgsqlParameter">NpgsqlParameter</see> with the specified parameter name exists in the collection. /// </summary> /// <param name="parameterName">The name of the <see cref="NpgsqlParameter">NpgsqlParameter</see> object to find.</param> /// <returns><b>true</b> if the collection contains the parameter; otherwise, <b>false</b>.</returns> public override bool Contains(string parameterName) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "Contains", parameterName); return(IndexOf(parameterName) != -1); }
/// <summary> /// Adds a <see cref="NpgsqlParameter">NpgsqlParameter</see> to the <see cref="NpgsqlParameterCollection">NpgsqlParameterCollection</see> given the parameter name and the data type. /// </summary> /// <param name="parameterName">The name of the parameter.</param> /// <param name="parameterType">One of the DbType values.</param> /// <returns>The index of the new <see cref="NpgsqlParameter">NpgsqlParameter</see> object.</returns> public NpgsqlParameter Add(string parameterName, NpgsqlDbType parameterType) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "Add", parameterName, parameterType); return(this.Add(new NpgsqlParameter(parameterName, parameterType))); }
/// <summary> /// Process this.commandText, trimming each distinct command and substituting paramater /// tokens. /// </summary> /// <param name="prepare"></param> /// <returns>UTF8 encoded command ready to be sent to the backend.</returns> private byte[] GetCommandText(bool prepare) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "GetCommandText"); MemoryStream commandBuilder = new MemoryStream(); if (commandType == CommandType.TableDirect) { foreach (var table in commandText.Split(';')) { if (table.Trim().Length == 0) { continue; } commandBuilder .WriteString("SELECT * FROM ") .WriteString(table) .WriteString(";"); } } else if (commandType == CommandType.StoredProcedure) { if (!prepare && !functionChecksDone) { functionNeedsColumnListDefinition = Parameters.Count != 0 && CheckFunctionNeedsColumnDefinitionList(); functionChecksDone = true; } commandBuilder.WriteString("SELECT * FROM "); if (commandText.TrimEnd().EndsWith(")")) { if (!AppendCommandReplacingParameterValues(commandBuilder, commandText, prepare, false)) { throw new NpgsqlException("Multiple queries not supported for stored procedures"); } } else { commandBuilder .WriteString(commandText) .WriteBytes((byte)ASCIIBytes.ParenLeft); if (prepare) { AppendParameterPlaceHolders(commandBuilder); } else { AppendParameterValues(commandBuilder); } commandBuilder.WriteBytes((byte)ASCIIBytes.ParenRight); } if (!prepare && functionNeedsColumnListDefinition) { AddFunctionColumnListSupport(commandBuilder); } } else { if (!AppendCommandReplacingParameterValues(commandBuilder, commandText, prepare, !prepare)) { throw new NpgsqlException("Multiple queries not supported for prepared statements"); } } return(commandBuilder.ToArray()); }
/// <summary> /// Creates and returns a <see cref="System.Data.Common.DbCommand">DbCommand</see> /// object associated with the <see cref="System.Data.Common.DbConnection">IDbConnection</see>. /// </summary> /// <returns>A <see cref="System.Data.Common.DbCommand">DbCommand</see> object.</returns> protected override DbCommand CreateDbCommand() { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "CreateDbCommand"); return(CreateCommand()); }
/// <summary> /// Adds a <see cref="NpgsqlParameter">NpgsqlParameter</see> to the <see cref="NpgsqlParameterCollection">NpgsqlParameterCollection</see> given the specified parameter name and value. /// </summary> /// <param name="parameterName">The name of the <see cref="NpgsqlParameter">NpgsqlParameter</see>.</param> /// <param name="value">The Value of the <see cref="NpgsqlParameter">NpgsqlParameter</see> to add to the collection.</param> /// <returns>The paramater that was added.</returns> public NpgsqlParameter AddWithValue(string parameterName, object value) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "AddWithValue", parameterName, value); return(this.Add(new NpgsqlParameter(parameterName, value))); }
/// <summary> /// Begins a database transaction. /// </summary> /// <returns>A <see cref="NpgsqlTransaction">NpgsqlTransaction</see> /// object representing the new transaction.</returns> /// <remarks> /// Currently there's no support for nested transactions. /// </remarks> public new NpgsqlTransaction BeginTransaction() { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "BeginTransaction"); return(this.BeginTransaction(IsolationLevel.ReadCommitted)); }
/// <summary> /// Begins a database transaction with the specified isolation level. /// </summary> /// <param name="isolationLevel">The <see cref="System.Data.IsolationLevel">isolation level</see> under which the transaction should run.</param> /// <returns>An <see cref="System.Data.Common.DbTransaction">DbTransaction</see> /// object representing the new transaction.</returns> /// <remarks> /// Currently the IsolationLevel ReadCommitted and Serializable are supported by the PostgreSQL backend. /// There's no support for nested transactions. /// </remarks> protected override DbTransaction BeginDbTransaction(IsolationLevel isolationLevel) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "BeginDbTransaction", isolationLevel); return(BeginTransaction(isolationLevel)); }
/// <summary> /// Constructor. /// </summary> /// <param name="selectCommand"></param> public NpgsqlDataAdapter(NpgsqlCommand selectCommand) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, CLASSNAME); SelectCommand = selectCommand; }
/// <summary> /// Returns an enumerator that can iterate through the collection. /// </summary> /// <returns>An <see cref="System.Collections.IEnumerator">IEnumerator</see> that can be used to iterate through the collection.</returns> public override IEnumerator GetEnumerator() { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "GetEnumerator"); return(this.InternalList.GetEnumerator()); }
/// <summary> /// Adds a <see cref="NpgsqlParameter">NpgsqlParameter</see> to the <see cref="NpgsqlParameterCollection">NpgsqlParameterCollection</see> with the parameter name, the data type, the column length, and the source column name. /// </summary> /// <param name="parameterName">The name of the parameter.</param> /// <param name="parameterType">One of the DbType values.</param> /// <param name="size">The length of the column.</param> /// <param name="sourceColumn">The name of the source column.</param> /// <returns>The index of the new <see cref="NpgsqlParameter">NpgsqlParameter</see> object.</returns> public NpgsqlParameter Add(string parameterName, NpgsqlDbType parameterType, int size, string sourceColumn) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "Add", parameterName, parameterType, size, sourceColumn); return(this.Add(new NpgsqlParameter(parameterName, parameterType, size, sourceColumn))); }
/// <summary> /// Initializes a new instance of the NpgsqlParameterCollection class. /// </summary> internal NpgsqlParameterCollection() { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, CLASSNAME); InvalidateHashLookups(); }
/// <summary> /// Removes the specified <see cref="NpgsqlParameter">NpgsqlParameter</see> from the collection using the parameter name. /// </summary> /// <param name="parameterName">The name of the <see cref="NpgsqlParameter">NpgsqlParameter</see> object to retrieve.</param> public override void RemoveAt(string parameterName) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "RemoveAt", parameterName); RemoveAt(this.IndexOf(parameterName)); }
internal static void LogStringWritten(string theString) { NpgsqlEventLog.LogMsg("Log_StringWritten", LogLevel.Debug, theString); }
public NpgsqlPasswordPacket(byte[] password) { NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, CLASSNAME); this.password = password; }