Detaillierte Erläuterung der Unterschiede zwischen Parameters.Add und Parameters.AddWithValue
Mit der MethodeParameters.Add
können Sie Parameternamen, SqlDbType und Werte angeben. Die korrekte Syntax lautet wie folgt:
<code class="language-csharp">command.Parameters.Add("@ID", SqlDbType.Int); command.Parameters["@ID"].Value = customerID;</code>
Im Gegensatz dazu hat Parameters.AddWithValue
eine prägnantere Syntax und erfordert keine Angabe von SqlDbType:
<code class="language-csharp">command.Parameters.AddWithValue("@demographics", demoXml);</code>
Bei Verwendung von Parameters.AddWithValue
mit derselben Syntax wie Parameters.Add
tritt jedoch kein Kompilierungsfehler auf. Interessanterweise wird der Code auch normal ausgeführt.
Ausführliche Erklärung
Intern verwenden beide Methoden die gleiche Methode:
<code class="language-csharp">return this.Add(new SqlParameter(parameterName, value));</code>
Parameters.AddWithValue
wurde als Ersatz für Parameters.Add
eingeführt, um die Klarheit des Codes zu verbessern. Bei der Überladung von Parameters.Add
ist das zweite Argument vom Typ Objekt, was zu Verwirrung darüber führen kann, welche Überladung verwendet werden soll. Diese Unterscheidung ist wichtig, da Überlastung ein sehr unterschiedliches Verhalten aufweist.
Betrachten Sie das folgende Beispiel:
<code class="language-csharp">SqlCommand command = new SqlCommand(); command.Parameters.Add("@name", 0);</code>
Obwohl es so aussieht, als ob es die Add(string name, object value)
-Überladung auslöst, wird tatsächlich die Add(string name, SqlDbType type)
-Überladung aufgerufen. Dies liegt daran, dass 0 implizit in einen Aufzählungstyp konvertierbar ist.
Daher werden durch die Verwendung von Parameters.AddWithValue
potenzielle Unklarheiten beseitigt und die Lesbarkeit des Codes verbessert. Es wird empfohlen, Parameters.AddWithValue
bevorzugt zu verwenden, um einen klareren und einfacher zu wartenden Code zu erhalten.
Das obige ist der detaillierte Inhalt vonParameters.Add vs. Parameters.AddWithValue: Was ist der wirkliche Unterschied und welchen sollte ich verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!