Documente Academic
Documente Profesional
Documente Cultură
CUM Sa Apelați o Procedură Stocată Parametrizată Utilizând ADO NET Și Visual C# NET
CUM Sa Apelați o Procedură Stocată Parametrizată Utilizând ADO NET Și Visual C# NET
NET
5. Modificai irul de conexiune pentru obiecte de conexiune pentru a indica pe computerul care
execut SQL Server.
6. Codul de executare. Observai c DataReader regsete nregistrrile i apoi returneaz valorile
parametru. Utilizai metoda de citire a DataReader obiectului s se deplaseze nregistrri
returnate.
Fereastra de ieire afieaz titlurile de dou cri, valoarea returnat de 5 i parametrul de ieire,
care conine numrul de nregistrri (2). Observai c trebuie s nchidei DataReader n cod
pentru a vedea valorile parametru. n plus, Reinei c nu avei pentru a trece prin toate
nregistrrile pentru a vedea parametrii return dac DataReader se nchide.
Utilizai DataReader pentru a reveni rndurile i parametrii
Utilizai metoda ExecuteScalar a obiectului de comand pentru a regsi valori ale parametrilor. n plus,
ExecuteScalar returneaz prima coloan din primul rnd de procedur stocat. Aceasta este cea mai
util pentru funciile cumulate exemplul urmtor.
1. Creai urmtoarea procedur stocat pe serverul care execut SQL Server:
CREATE PROCEDURE TestProcedure2
(
@au_idIN varchar (11)
)
AS
/* set nocount on */
SELECT COUNT(T.title)
FROM authors AS A
JOIN titleauthor AS TA ON A.au_id=TA.au_id
JOIN titles AS T ON T.title_id=TA.title_id
WHERE A.au_id=@au_idIN
RETURN(5)
5. Modificai irul de conexiune pentru obiecte de conexiune pentru a indica pe computerul care
execut SQL Server.
6. Codul de executare. Observai c metoda ExecuteScalar a obiectului comand returneaz
parametrii. ExecuteScalar returneaz valoarea din coloana 1, rndul 1 al set de rnduri
returnate. De aceea, valoarea intCount este rezultatul funcia count din procedura stocat.
Utilizai metoda ExecuteScalar a obiectului de comand
Acest exemplu utilizeaz metoda ExecuteNonQuery s executai interogarea i pentru a returna valorile
parametru. ExecuteNonQuery Returneaz numrul de nregistrri care sunt afectate dup ce se execut
interogarea. Cu toate acestea, ExecuteNonQuery nu returneaz orice rnduri sau coloane de procedur
stocat.
Metoda ExecuteNonQuery este util cnd utilizai INSERT, UPDATE sau DELETE declaraii dac trebuie s
tii ct de multe rnduri sunt modificate. ntr-o procedur stocat n care utilizai numai o instruciune
SELECT, primii -1, deoarece rndurile nu sunt afectate de interogare.
1. Creai urmtoarea procedur stocat pe computerul care execut SQL Server:
CREATE PROCEDURE TestProcedure3
(
@au_idIN varchar (11),
@au_fnam varchar (30)
)
AS
/* set nocount on */
UPDATE authors SET au_fname = @au_fnam
WHERE au_id = @au_idin
RETURN (5)
4. nlocuii codul de mai jos evenimentul Form1_Load privat n modulul cod Form1 cu urmtorul
cod:SQL Client
string strRowAffect;
SqlConnection PubsConn = new SqlConnection("Data Source=server;integrated Security=sspi;initial
catalog=pubs;");
SqlCommand testCMD = new SqlCommand("TestProcedure3", PubsConn);testCMD.CommandType =
CommandType.StoredProcedure;
SqlParameter RetVal = testCMD.Parameters.Add("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;
SqlParameter IdIn = testCMD.Parameters.Add("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
SqlParameter FnameIn = testCMD.Parameters.Add("@au_fnam", SqlDbType.VarChar, 30);
FnameIn.Direction = ParameterDirection.Input;
IdIn.Value = "213-46-8915";
FnameIn.Value = "Marjorie";
PubsConn.Open();
strRowAffect = testCMD.ExecuteNonQuery().ToString() ;
Console.WriteLine("Number of Rows: " + strRowAffect );
Console.WriteLine("Return Value: " + RetVal.Value);
5. Modificai irul de conexiune pentru obiecte de conexiune pentru a indica pe computerul care
execut SQL Server.
6. Codul de executare. Fereastra de ieire afieaz numrul de rnduri afectate (intRowAffect) i
valoarea parametrul return.