Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Chiamare una stored procedure

10 views
Skip to first unread message

ferradini

unread,
Jan 2, 2012, 3:50:36 AM1/2/12
to
ho realizzato una stored procedure, principalmente si tratta di
impostare due tabelle con i parametri passati.
la stored procedure funziona perfettamente se lanciata da SQL SERVER
MANAGEMENT mentre da c# non riesco a farla funzionare, in pratica mi
lascia inalterate le tabelle che dovevo modificare all'interno della
stored procedure.

Questo il codice


SqlConnection sqlConnection1 = new
SqlConnection(Globals.ConnectionString2008);
sqlConnection1.Open();

SqlCommand cmd = new SqlCommand("dbo.sp_nomeprocdura", sqlConnection1);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@str1","04.13.44.54.64.74.84.89");
cmd.Parameters.AddWithValue("@str2", "04.13.79");

cmd.ExecuteNonQuery();


INT 32 valore pippo = xq.ExecScalar<int>("SELECT COUNT(*) FROM TK001
WHERE flag = 'X'");
sqlConnection1.Close();


E' la prima volta che uso una stored procedure richiamata in c# e non
so come comportarmi.
Grazie Ferradini

LudovicoVan

unread,
Jan 2, 2012, 10:14:53 AM1/2/12
to
"ferradini" <gianmarco...@email.it> wrote in message
news:jdrr4t$uv$1...@tdi.cu.mi.it...

> Questo il codice

Ad occhio mi sembra corretto, l'unica nota e' che dovresti usare un
try-finally oppure una using per garantire il rilascio dell'oggetto
connection.

Quindi occorrerebbe vedere il codice della stored procedure: oppure potresti
fare un po' di debug inserendo nei punti opportuni della sp dei RAISERROR
(cioe' sollevi un'eccezione: vedi documentazione): es. RAISERROR(N'@str1 =
%s', 16, 1, @str1), la sintassi per i parametri e' la stessa del printf in
C.

> INT 32 valore pippo = xq.ExecScalar<int>("SELECT COUNT(*) FROM TK001

Quello non e' C#: sei sicuro che il progetto compila?

> E' la prima volta che uso una stored procedure richiamata in c#

Lavorare direttamente in ADO.NET va bene per studiare e capire come
funziona, dopodiche ti consiglierei di passare al DAAB (*) che non solo ti
risparmia parecchio boiler-plate code, ti fornisce anche funzionalita'
avanzate tipo gli accessor per ritornare direttamente oggetti e collezioni
di oggetti (quando serve).

(*) http://msdn.microsoft.com/en-us/library/ff664408(v=PandP.50).aspx

-LV


0 new messages