Problem beim Auslesen der parameter von gespeicherten Prozeduren mit c#

Nur komm ich über ein seltsames problem, wo ich nicht abrufen der gespeicherten sql-Prozedur aus parameter-Wert. Ich schlug mit diesem problem seit fast 2 Stunden.

Code ist sehr einfach

    using (var con = new SqlConnection(connectionString))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("sp_mgsearach", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter param1 = new SqlParameter("@SearchTerm", SqlDbType.VarChar);
            param1.Value = searchTerm;
            param1.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(param1);
            SqlParameter param2 = new SqlParameter("@start", SqlDbType.Int);
            param2.Value = start;
            param2.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(param2);
            SqlParameter param3 = new SqlParameter("@end", SqlDbType.Int);
            param3.Value = end;
            param3.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(param3);
            SqlParameter param4 = new SqlParameter("@total", SqlDbType.Int);
            param4.Direction = ParameterDirection.InputOutput;
            param4.Value = 0;
            cmd.Parameters.Add(param4);


            var reader = cmd.ExecuteReader();
            LoadHits(reader);           
            if (lstHits.Count > 0)
                total = Convert.ToInt32(cmd.Parameters["@total"].Value);
            else
                total = 0;

        }

dem @ - Gesamt-Wert ist immer null. Aber wenn ich die Abfrage ausführen wird durch den profiler in query analyzer , gibt es in Ordnung.

Schließlich habe ich festgestellt, dass dies durch die SQL-Verbindung.

Es funktioniert gut, wenn ich schließen Sie die Verbindung vor dem Lesen Sie den out-param

            LoadHits(reader);           
            con.close()
            if (lstHits.Count > 0)
                total = Convert.ToInt32(cmd.Parameters["@total"].Value);
            else
                total = 0;

WT.., ich kann nicht herausfinden, warum verhält es sich so.. jemand eine Idee?

InformationsquelleAutor RameshVel | 2010-09-27
Schreibe einen Kommentar