Ich habe eine Funktion, in der ich zwei Anfragen an eine SQL Server-Datenbank senden; Bei der zweiten Anfrage bekomme ich jedoch eine SqlException
und den Parameter @mpe
fehlt. Wenn ich versuche, den Konstantenwert 0
im Konstruktor SqlParameter
zu setzen.SqlParameter (String, Objekt) kann nicht mit konstanten Wert umgehen
protected static string GetX(int mpe, string xsection, string xkey)
{
var xSetup = App.Current.Db.GetType<Data.CachedTypes.XSetup>(
"where [email protected] and [email protected] and [email protected]",
new System.Data.SqlClient.SqlParameter("@mpe", mpe),
new System.Data.SqlClient.SqlParameter("@xsection", xsection),
new System.Data.SqlClient.SqlParameter("@xkey", xkey));
if (mpe > 0 && xSetup == null)
{
// Fallback mechanism. Always tries to get the default for all MPEs.
xSetup = App.Current.Db.GetType<Data.CachedTypes.XSetup>(
"where [email protected] and [email protected] and [email protected]",
new System.Data.SqlClient.SqlParameter("@mpe", 0), <-- THIS FAILES!!
new System.Data.SqlClient.SqlParameter("@xsection", xsection),
new System.Data.SqlClient.SqlParameter("@xkey", xkey));
Wenn ich jedoch den konstanten Wert 0
auf einen lokalen Wert int xmpe = 0
und übergeben diese an den Konstruktor extrahieren, führt die SQL-Abfrage wie erwartet und ein Ergebnis abgerufen wird. Kann jemand erklären, warum das passiert?
Das ist es, 'neue SqlParameter ("name", (Objekt) 0)' wird bei erwarteten Verhalten zu arbeiten. –