IndexOf() public method

Gets the location of a MySqlParameter in the collection.
public IndexOf ( object value ) : int
value object The object to locate.
return int
Esempio n. 1
0
        public CommandResult Execute(MySqlParameterCollection parameters)
        {
            PacketWriter packetWriter = new PacketWriter();

            packetWriter.Driver = (NativeDriver)this.driver;
            BitArray bitArray = new BitArray(parameters.Count);

            for (int i = 0; i < this.paramList.Length; i++)
            {
                MySqlParameter mySqlParameter = parameters[this.paramList[i].ColumnName];
                if (mySqlParameter.Value == DBNull.Value || mySqlParameter.Value == null)
                {
                    bitArray[i] = true;
                }
            }
            byte[] array = new byte[(parameters.Count + 7) / 8];
            if (array.Length > 0)
            {
                bitArray.CopyTo(array, 0);
            }
            packetWriter.WriteInteger((long)this.StatementId, 4);
            packetWriter.WriteByte(0);
            packetWriter.WriteInteger(1L, 4);
            packetWriter.Write(array);
            packetWriter.WriteByte(1);
            MySqlField[] array2 = this.paramList;
            for (int j = 0; j < array2.Length; j++)
            {
                MySqlField     mySqlField      = array2[j];
                MySqlParameter mySqlParameter2 = parameters[mySqlField.ColumnName];
                packetWriter.WriteInteger((long)mySqlParameter2.GetPSType(), 2);
            }
            array2 = this.paramList;
            for (int j = 0; j < array2.Length; j++)
            {
                MySqlField mySqlField2 = array2[j];
                int        num         = parameters.IndexOf(mySqlField2.ColumnName);
                if (num == -1)
                {
                    throw new MySqlException("Parameter '" + mySqlField2.ColumnName + "' is not defined.");
                }
                MySqlParameter mySqlParameter3 = parameters[num];
                if (mySqlParameter3.Value != DBNull.Value && mySqlParameter3.Value != null)
                {
                    packetWriter.Encoding = mySqlField2.Encoding;
                    mySqlParameter3.Serialize(packetWriter, true);
                }
            }
            this.executionCount++;
            return(this.driver.ExecuteStatement(((MemoryStream)packetWriter.Stream).ToArray()));
        }
Esempio n. 2
0
        /// <summary>
        /// We use a separate method here because we want to support using parameter
        /// names with and without a leading marker but we don't want the indexing
        /// methods of MySqlParameterCollection to support that.
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        private MySqlParameter GetParameter(MySqlParameterCollection parameters, string name)
        {
            int index = parameters.IndexOf(name);

            if (index == -1)
            {
                name  = name.Substring(1);
                index = Parameters.IndexOf(name);
                if (index == -1)
                {
                    return(null);
                }
            }
            return(parameters[index]);
        }
Esempio n. 3
0
        private MySqlParameter GetParameter(MySqlParameterCollection parameters, string name)
        {
            int num = parameters.IndexOf(name);

            if (num == -1)
            {
                name = name.Substring(1);
                num  = this.Parameters.IndexOf(name);
                if (num == -1)
                {
                    return(null);
                }
            }
            return(parameters[num]);
        }
Esempio n. 4
0
        /// <summary>
        /// Serializes the given parameter to the given memory stream
        /// </summary>
        /// <param name="writer">PacketWriter to stream parameter data to</param>
        /// <param name="parmName">Name of the parameter to serialize</param>
        /// <remarks>
        /// <para>This method is called by PrepareSqlBuffers to convert the given
        /// parameter to bytes and write those bytes to the given memory stream.
        /// </para>
        /// </remarks>
        /// <returns>True if the parameter was successfully serialized, false otherwise.</returns>
        private bool SerializeParameter(PacketWriter writer, string parmName)
        {
            int index = parameters.IndexOf(parmName);

            if (index == -1)
            {
                // if we are using old syntax, we can't throw exceptions for parameters
                // not defined.
                if (connection.Settings.UseOldSyntax)
                {
                    return(false);
                }
                throw new MySqlException("Parameter '" + parmName + "' must be defined");
            }
            MySqlParameter parameter = parameters[index];

            parameter.Serialize(writer, false);
            return(true);
        }
Esempio n. 5
0
 /// <summary>
 /// We use a separate method here because we want to support using parameter
 /// names with and without a leading marker but we don't want the indexing
 /// methods of MySqlParameterCollection to support that.
 /// </summary>
 /// <param name="parameters"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 private MySqlParameter GetParameter(MySqlParameterCollection parameters, string name)
 {
     int index = parameters.IndexOf(name);
     if (index == -1)
     {
         name = name.Substring(1);
         index = Parameters.IndexOf(name);
         if (index == -1)
             return null;
     }
     return parameters[index];
 }
Esempio n. 6
0
        public CommandResult Execute(MySqlParameterCollection parameters)
        {
            PacketWriter packet = new PacketWriter();

            packet.Driver = (NativeDriver)driver;

            //TODO: support long data here
            // create our null bitmap
            BitArray nullMap = new BitArray(parameters.Count);               //metaData.Length );

            for (int x = 0; x < parameters.Count; x++)
            {
                if (parameters[x].Value == DBNull.Value ||
                    parameters[x].Value == null)
                {
                    nullMap[x] = true;
                }
            }
            byte[] nullMapBytes = new byte[(parameters.Count + 7) / 8];
            nullMap.CopyTo(nullMapBytes, 0);

            // start constructing our packet
            packet.WriteInteger(StatementId, 4);
            packet.WriteByte(0);                        // flags; always 0 for 4.1
            packet.WriteInteger(1, 4);                  // interation count; 1 for 4.1
            packet.Write(nullMapBytes);
            //if (parameters != null && parameters.Count > 0)
            packet.WriteByte(1);                                        // rebound flag
            //else
            //	packet.WriteByte( 0 );
            //TODO:  only send rebound if parms change

            // write out the parameter types
            foreach (MySqlField param in paramList)
            {
                MySqlParameter parm = parameters[param.ColumnName];
                packet.WriteInteger((long)parm.GetPSType(), 2);
            }

            // now write out all non-null values
            foreach (MySqlField param in paramList)
            {
                int index = parameters.IndexOf(param.ColumnName);
                if (index == -1)
                {
                    throw new MySqlException("Parameter '" + param.ColumnName +
                                             "' is not defined.");
                }
                MySqlParameter parm = parameters[index];
                if (parm.Value == DBNull.Value || parm.Value == null)
                {
                    continue;
                }

                packet.Encoding = param.Encoding;
                parm.Serialize(packet, true);
            }

            executionCount++;
            // send the data packet and return the CommandResult
            return(driver.ExecuteStatement(((System.IO.MemoryStream)packet.Stream).ToArray()));
        }