2009-05-24 3 views
4

Es gibt mehrere Überladungen für sqlcommand.Parameters.Add (...) -Funktion. Einige von ihnen nehmen keine Größe an, andere tun es. Welche Größen sind standardmäßig eingestellt? Ist es sicher, keine Parametergrößen zu setzen? Beeinflusst es die Leistung?Standardgrößen für SQL-Parameter in ADO.NET

Antwort

4

Von SqlParameter.Size Property doco

Wenn nicht explizit festgelegt, wird die Größe von der tatsächlichen Größe des angegebenen Parameterwert abgeleitet.

Es gibt eine wunderbare Antwort von Peter Wone auf 293315, die genauer beschreibt, was das eigentlich bedeutet

+0

Danke. Der Link, den Sie angegeben haben, war sehr nützlich. – Roma

+0

Keine Sorgen. Ich habe ein oder zwei Dinge gelernt, die Peters Erklärung gelesen haben, also sollte ich * dir * dafür danken, dass du die Frage gestellt hast :-) –

1

Es ist möglich, einen Parameter zu senden, die auf SQL Server zu groß für den Datenbank-Datentyp von .NET-Code. Wenn Sie beim Erstellen des Parameters in Ihrem .NET-Code die Größe festlegen, wird eine Ausnahme ausgelöst, wenn ein Wert gesendet wird, der zu groß ist. Sie werden es also früher wissen und den Datenbankaufruf nicht verschwenden.

Alternativ können Sie eine maximale Anzahl von Zeichen für bestimmte Textfelder festlegen. Die Datenbank kann möglicherweise Nachnamen von 400 Zeichen zulassen, aber Sie möchten nur varchar 100.

Der Parameter Nullable Eigenschaft ist ähnlich. Es ist optional, aber wenn der Parameter im sproc-Aufruf nicht null sein kann, wird das Problem früher angezeigt, wenn Sie in Ihrem .Net-Code keinen NULL-Wert angeben.

+0

"Alternativ könntest du eine maximale Anzahl von Zeichen für bestimmte Textfelder festlegen. Die Datenbank könnte Nachnamen zulassen 400 Zeichen, aber Sie wollen nur varchar 100. " - Wenn Sie in diesem Fall einen String mit mehr als 100 Zeichen (und weniger als 400 Zeichen, damit er von der DB akzeptiert wird) übergeben, wird er abgeschnitten, und Sie könnten Daten verlieren. – Roma