From: Date: March 19 2007 7:09pm
Subject: Connector/NET commit: r637 - in branches/5.0: . Driver/Source TestSuite
List-Archive: http://lists.mysql.com/commits/22291
X-Bug: 27135
Message-Id: <200703191809.l2JI9bBx020268@bk-internal.mysql.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Modified:
branches/5.0/CHANGES
branches/5.0/Driver/Source/parameter_collection.cs
branches/5.0/TestSuite/ParameterTests.cs
Log:
Bug #27135 MySqlParameterCollection and parameters added with Insert Method
Refactored the code for adding a parameter so we can call it from the Add() and Insert() methods
Modified: branches/5.0/CHANGES
===================================================================
--- branches/5.0/CHANGES 2007-03-19 16:18:43 UTC (rev 636)
+++ branches/5.0/CHANGES 2007-03-19 18:09:37 UTC (rev 637)
@@ -1,3 +1,10 @@
+Version 5.0.6
+
+ Bugs fixed
+ ----------
+ Bug #27135 MySqlParameterCollection and parameters added with Insert Method
+ Bug #27253 Installer : Company info is different
+
Version 5.0.5 3/5/2007
Bugs fixed
Modified: branches/5.0/Driver/Source/parameter_collection.cs
===================================================================
--- branches/5.0/Driver/Source/parameter_collection.cs 2007-03-19 16:18:43 UTC (rev 636)
+++ branches/5.0/Driver/Source/parameter_collection.cs 2007-03-19 18:09:37 UTC (rev 637)
@@ -90,34 +90,7 @@
/// The newly added object.
public MySqlParameter Add(MySqlParameter value)
{
- if (value == null)
- throw new ArgumentException("The MySqlParameterCollection only accepts non-null MySqlParameter type objects.", "value");
-
- if (value.Direction == ParameterDirection.ReturnValue)
- return AddReturnParameter(value);
-
- string inComingName = value.ParameterName.ToLower();
- if (inComingName[0] == paramMarker)
- inComingName = inComingName.Substring(1, inComingName.Length - 1);
-
- for (int i = 0; i < items.Count; i++)
- {
- MySqlParameter p = (MySqlParameter)items[i];
- string name = p.ParameterName.ToLower();
- if (name[0] == paramMarker)
- name = name.Substring(1, name.Length - 1);
- if (name == inComingName)
- {
- throw new MySqlException(
- String.Format(Resources.ParameterAlreadyDefined, value.ParameterName));
- }
- }
-
- int index = items.Add(value);
- hash.Add(value.ParameterName, index);
- ciHash.Add(value.ParameterName, index);
- value.Collection = this;
- return value;
+ return InternalAdd(value, -1);
}
private MySqlParameter AddReturnParameter(MySqlParameter value)
@@ -388,7 +361,9 @@
///
public override void Insert(int index, object value)
{
- items.Insert(index, value);
+ if (!(value is MySqlParameter))
+ throw new MySqlException("Only MySqlParameter objects may be stored");
+ InternalAdd((MySqlParameter)value, index);
}
///
@@ -476,5 +451,40 @@
hash.Add(newName, index);
ciHash.Add(newName, index);
}
+
+ private MySqlParameter InternalAdd(MySqlParameter value, int index)
+ {
+ if (value == null)
+ throw new ArgumentException("The MySqlParameterCollection only accepts non-null MySqlParameter type objects.", "value");
+
+ if (value.Direction == ParameterDirection.ReturnValue)
+ return AddReturnParameter(value);
+
+ string inComingName = value.ParameterName.ToLower();
+ if (inComingName[0] == paramMarker)
+ inComingName = inComingName.Substring(1, inComingName.Length - 1);
+
+ for (int i = 0; i < items.Count; i++)
+ {
+ MySqlParameter p = (MySqlParameter)items[i];
+ string name = p.ParameterName.ToLower();
+ if (name[0] == paramMarker)
+ name = name.Substring(1, name.Length - 1);
+ if (name == inComingName)
+ {
+ throw new MySqlException(
+ String.Format(Resources.ParameterAlreadyDefined, value.ParameterName));
+ }
+ }
+
+ if (index == -1)
+ index = items.Add(value);
+ else
+ items.Insert(index, value);
+ hash.Add(value.ParameterName, index);
+ ciHash.Add(value.ParameterName, index);
+ value.Collection = this;
+ return value;
+ }
}
}
Modified: branches/5.0/TestSuite/ParameterTests.cs
===================================================================
--- branches/5.0/TestSuite/ParameterTests.cs 2007-03-19 16:18:43 UTC (rev 636)
+++ branches/5.0/TestSuite/ParameterTests.cs 2007-03-19 18:09:37 UTC (rev 637)
@@ -478,5 +478,17 @@
cmd.Parameters.RemoveAt(0);
cmd.Parameters.Add(param1);
}
+
+ ///
+ /// Bug #27135 MySqlParameterCollection and parameters added with Insert Method
+ ///
+ [Test]
+ public void AddingParametersUsingInsert()
+ {
+ MySqlCommand cmd = new MySqlCommand();
+ cmd.Parameters.Insert(0, new MySqlParameter("?id", MySqlDbType.Int32));
+ MySqlParameter p = cmd.Parameters["?id"];
+ Assert.AreEqual("?id", p.ParameterName);
+ }
}
}