List:Commits« Previous MessageNext Message »
From:rburnett Date:March 19 2007 7:09pm
Subject:Connector/NET commit: r637 - in branches/5.0: . Driver/Source TestSuite
View as plain text  
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 @@
 		/// <returns>The newly added <see cref="MySqlParameter"/>
object.</returns>
 		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 @@
 		/// <param name="value"></param>
 		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);
 		}
 
         /// <summary>
@@ -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);
         }
+
+        /// <summary>
+        /// Bug #27135 MySqlParameterCollection and parameters added with Insert Method 
+        /// </summary>
+        [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);
+        }
     }
 }

Thread
Connector/NET commit: r637 - in branches/5.0: . Driver/Source TestSuiterburnett19 Mar