Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Váš prehliadač nie je podporovaný

Ak chcete lokalitu používať, aktualizujte svoj prehliadač.

Aktualizovať na najnovšiu verziu Internet Explorera

AKO na TO: Volať parametrizovaných uloženej procedúry použitím ADO.NET a Visual C#.NET

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 310070
Pre Microsoft Visual Basic.NET verziu tohto článku, pozrite si 308049.
Pre Microsoft Visual C++.NET verziu tohto článku, pozrite si 310071.
Pre Microsoft Visual J#.NET verziu tohto článku, pozrite si 320627.

Tento článok sa vzťahuje na nasledovné spoločnosti Microsoft.NET rámec triedy knižnica názvov:
  • System.Data.SqlClient
  • System.Data.OleDb

V TEJTO ÚLOHE

SUHRN
Existuje niekoľko spôsobov, ako použiť ADO.NET volanie uloženej procedúry s cieľom získať späť návratové hodnoty a vráti parametre vrátane:
  • Pomocou DataSet objekt zbierať vrátený riadkov a pracovať s týmito riadkami popri návratové hodnoty a návrat parametre.
  • Použiť DataReader objektu zhromaždiť vrátených riadkov sa pohybovať cez tieto riadky a potom zbierať návratové hodnoty a návrat parametre.
  • Použite metódu ExecuteScalar Ak chcete vrátiť hodnotu z prvého stĺpca výsledky prvého riadka návratové hodnoty a návrat parametre. To je najužitočnejšie s agregačných funkcií.
  • Použite metódu ExecuteNonQuery vrátiť len vrátiť parametre a návratové hodnoty. Všetky vrátené riadky sú odstránené. To je najužitočnejšie pre vykonávajúci akčné dotazy.
Tento článok ukazuje posledné tri metódy a používa SqlCommand a OleDbCommand objektov. Uistite sa, že kopírovať len kód pre riadené poskytovateľa, ktorý používate. Ak si nie ste istí, ktoré spravovaných poskytovateľa by ste mali používať, navštívte nasledujúcu lokalitu spoločnosti webová lokalita Microsoft Developer Network Web:V každej zo vzoriek v tomto článku sa parametre, ktoré sa pridávajú k zhromažďovanie parametrovpríkaz objekt. Ak použijete objekt SqlCommand , budete mať nepridávajte parametrov v konkrétnom slede, ale parametre musia mať správny názov. Ak použijete objekt OleDbCommand , musíte pridať parametre v správnom poradí a nie je možné použiť parametre s názvom.

back to the top

Použite DataReader vrátiť riadkov a parametre

Môžete použiť DataReader objektu vrátiť iba na čítanie, premiestniteľným iba dopredu prúd údajov. Informácie, ktoré obsahuje DataReader môžu pochádzať z uloženej procedúry. Tento príklad používa DataReader objekt na spustenie uloženej procedúry, ktoré má vstupný a výstupný parameter a potom presunie cez vrátených záznamov chcete zobraziť návrat parametre.
  1. Vytvorenie uloženej procedúry na serveri so spustenou službou Microsoft SQL Server:
    Create Procedure TestProcedure(  @au_idIN varchar (11),  @numTitlesOUT Integer OUTPUT)AS select A.au_fname, A.au_lname, T.title from authors as A join titleauthor as TA onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINset @numTitlesOUT = @@Rowcountreturn (5) 					
  2. Vytvoriť nový Visual C#.NET Windows aplikácií project.
  3. Použite príkaz pomocousystému a System.Data názvov tak, že nemáte nárok vyhlásenia tie priestory názvov v kóde neskôr. Pridať tento kód v hornej časti formulára kód modulu. Presvedčte sa, či chcete kopírovať len kód poskytovateľa, ktorý ste vybrali.SQL klienta
    using System.Data.SqlClient;					
    OLE DB údaje poskytovateľa
    using System.Data.OleDb;					
  4. Nahradiť kód v prípade súkromných Form_Load s nasledujúcim kódom:SQL Client
    SqlConnection PubsConn = new SqlConnection ("Data Source=server;integrated " + "Security=sspi;initial catalog=pubs;");SqlCommand testCMD = new SqlCommand ("TestProcedure", 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 NumTitles = testCMD.Parameters.Add    ("@numtitlesout", SqlDbType.VarChar, 11);NumTitles.Direction = ParameterDirection.Output ;        IdIn.Value = "213-46-8915";PubsConn.Open();SqlDataReader myReader = testCMD.ExecuteReader();Console.WriteLine ("Book Titles for this Author:");while (myReader.Read())    {     Console.WriteLine ("{0}", myReader.GetString (2));   };myReader.Close() ;Console.WriteLine("Number of Rows: " + NumTitles.Value );Console.WriteLine("Return Value: " + RetVal.Value);					
    OLE DB údaje poskytovateľa
    OleDbConnection PubsConn = new OleDbConnection    ("Provider=SQLOLEDB;Data Source=server;" +    "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand    ("TestProcedure", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add    ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;OleDbParameter NumTitles = testCMD.Parameters.Add    ("@numtitlesout", OleDbType.VarChar, 11);NumTitles.Direction = ParameterDirection.Output;        IdIn.Value = "213-46-8915";PubsConn.Open();OleDbDataReader myReader = testCMD.ExecuteReader();Console.WriteLine ("Book Titles for this Author:");while (myReader.Read())    {     Console.WriteLine ("{0}", myReader.GetString (2));   };myReader.Close() ;Console.WriteLine("Number of Rows: " + NumTitles.Value );Console.WriteLine("Return Value: " + RetVal.Value);					
  5. Upraviť reťazec pripojenia pre objekt Connection ukážte na počítač, na ktorom je spustený server SQL Server.
  6. Spustiť kód. Všimnite si, že DataReader načíta záznamy a potom ju vráti hodnoty parametrov. Čítanie metódu DataReader objektu môžete použiť na prechádzanie medzi vrátených záznamov.

    Výstupné okno zobrazí názvy dvoch kníh, vrátenú hodnotu 5 a výstupný parameter, ktorý obsahuje počet záznamov (2). Všimnite si, že musíte zatvoriť DataReader v kóde vidieť hodnoty parametrov. Okrem toho pamätajte, že nemáte prechádzať všetky záznamy zistiť návrat parametre, ak DataReader uzavrie.
back to the top

Použite metódu ExecuteScalar objektu DoCmd príkaz

Na získanie hodnoty parametrov môžete použiť metódu ExecuteScalar objektu DoCmd príkaz . Okrem toho ExecuteScalar vráti prvý stĺpec prvý riadok uloženej procedúry. To je najužitočnejšie pre agregačných funkcií ako v nasledujúcom príklade.
  1. Vytvorenie uloženej procedúry na serveri so spustenou službou 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 onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINReturn(5)					
  2. Vytvoriť nový Visual C#.NET Windows aplikácií project.
  3. Použite príkaz pomocousystému a System.Data názvov tak, že nemáte nárok vyhlásenia tie priestory názvov v kóde neskôr. Pridať tento kód v hornej časti formulára kód modulu. Uistite sa, že kopírovať len kód poskytovateľa, ktorý ste vybrali.SQL klienta
    using System.Data.SqlClient;					
    OLE DB údaje poskytovateľa
    using System.Data.OleDb;					
  4. Pridať nasledujúci kód do Form_Load udalosti:SQL Client
    string strCount;SqlConnection PubsConn = new SqlConnection    ("Data Source=server;integrated " +    "Security=sspi;initial catalog=pubs;");SqlCommand testCMD = new SqlCommand    ("TestProcedure2", 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;        IdIn.Value = "213-46-8915";PubsConn.Open();strCount =testCMD.ExecuteScalar ().ToString() ;Console.WriteLine("Number of Rows: " + strCount );Console.WriteLine("Return Value: " + RetVal.Value);					
    OLE DB údaje poskytovateľa
    string strCount;OleDbConnection PubsConn = new OleDbConnection    ("Provider=SQLOLEDB;Data Source=server;" +    "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand    ("TestProcedure2", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add    ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";PubsConn.Open();strCount = testCMD.ExecuteScalar().ToString() ;Console.WriteLine("Number of Rows: " + strCount);Console.WriteLine("Return Value: " + RetVal.Value);					
  5. Upraviť reťazec pripojenia pre objekt Connection ukážte na počítač, na ktorom je spustený server SQL Server.
  6. Spustiť kód. Všimnite si, že metódu ExecuteScalar objektu DoCmd príkaz vráti parametre. ExecuteScalar tiež vráti hodnotu stĺpca 1, riadok 1 vrátených riadkov. Preto hodnota intCount je výsledkom funkcia count od uloženej procedúry.
back to the top

Použite metódu ExecuteNonQuery objektu DoCmd príkaz

Táto vzorka sa používa ExecuteNonQuery metóda spustite dotaz a vrátiť parametrické hodnoty. ExecuteNonQuery vráti počet záznamov, ktoré sú postihnuté po spusteného dotazu. Však ExecuteNonQuery nevráti žiadne riadky ani stĺpce z uloženej procedúry.

ExecuteNonQuery metóda je najužitočnejšia, keď použijete INSERT, UPDATE alebo DELETE výkazy, ak budete mať len vedieť, koľko riadkov sa zmenila. V uloženej procedúre, akým používate iba príkazom SELECT, budete dostávať -1, pretože žiadne riadkov ovplyvnených dotazom.
  1. Vytvorte uloženej procedúry na počítač, na ktorom je spustený server SQL Server:
    Create Procedure TestProcedure3(  @au_idIN varchar (11),  @au_fnam varchar (30))As/* set nocount on */ Update authors set au_fname = @au_fnamwhere au_id = @au_idin	return (5)					
  2. Vytvoriť nový Visual C#.NET Windows aplikácií project.
  3. Použite príkaz pomocousystému a System.Data názvov tak, že nemáte nárok vyhlásenia tie priestory názvov v kóde neskôr. Pridať tento kód v hornej časti formulára kód modulu. Uistite sa, že kopírovať len kód poskytovateľa, ktorý ste vybrali.SQL klienta
    using System.Data.SqlClient;					
    OLE DB údaje poskytovateľa
    using System.Data.OleDb;					
  4. Nahradiť kód nižšie súkromné Form1_Load udalostí v module Form1 kód s nasledujúci kód: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);					
    OLE DB údaje poskytovateľa
    int intRowAffected;OleDbConnection PubsConn = new OleDbConnection    ("Provider=SQLOLEDB;Data Source=server;" +    "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand    ("TestProcedure3", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add    ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;OleDbParameter FnameIn = testCMD.Parameters.Add   ("@au_fname", OleDbType.VarChar, 30);FnameIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";FnameIn.Value = "Marjorie";PubsConn.Open();intRowAffected = testCMD.ExecuteNonQuery();Console.WriteLine("Number of Rows affected: " + intRowAffected);Console.WriteLine(RetVal.Value);					
  5. Upraviť reťazec pripojenia pre objekt Connection ukážte na počítač, na ktorom je spustený server SQL Server.
  6. Spustiť kód. Výstupné okno zobrazuje počet riadkov ovplyvnených (intRowAffect) a hodnota parametra návratu.
back to the top
ODKAZY
Ďalšie informácie nájdete na nasledovných webových lokalitách MSDN:back to the top

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 310070 – Posledná kontrola: 06/12/2012 03:59:00 – Revízia: 3.0

  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB310070 KbMtsk
Pripomienky
c1.microsoft.com/c.gif?DI=4050&did=1&t=">r varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" col) + "//c.microsoft.com/ms.js'><\/script>");