Tento článek může obsahovat odkazy na anglický obsah (dosud NEPŘELOŽENÝ). volání SQL Server uložené procedury v technologii ASP.NET pomocí Visual C# .NET

Překlady článku Překlady článku
ID článku: 320916 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek ukazuje použití technologie ASP.NET a ADO.NET s Visual C# .NET k vytvoření a k volání Microsoft SQL Server uložené procedury s parametr vstupní a výstupní parametr.

Ukázka kódu v tomto článku nejprve zkontroluje, zda uložené procedury, která vytvoříte existuje v databázi pubs, která je součástí standardní instalace Microsoft SQL Server. Pokud neexistuje uložené procedury, kód vytvoří uložené procedury, která přijímá jeden parametr prohledat tabulku autoři, na základě poslední názvu a vrátí odpovídající řádky a počet řádků, které jsou vráceny v výstupní parametr.

Tento článek také ukazuje, jak vytvořit webový formulář, který poskytuje jednoduché uživatelského rozhraní. Webový formulář obsahuje následující položky:
  • Textové pole, ve které uživatel zadá podmínku vyhledávání.
  • Objekt DataGrid ovládací prvek, který zobrazuje výsledky hledání.
  • Popisek ovládací prvek, který zobrazuje počet vrácených záznamů.
  • Tlačítko ovládací prvek, který volání uložené procedury při klepnutí na tlačítko.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které jsou vyžadovány:
  • Microsoft SQL Server verze 7.0 nebo vyšší
  • Microsoft Visual Studio .NET
  • Microsoft Visual C# .NET
  • Oprávnění k vytvoření uložené procedury v databázi
Tento článek předpokládá, že je obeznámen s následující témata vám:
  • TECHNOLOGIE ASP.NET
  • SQL Server uloženy postupy

Vytvoření projektu aplikace ASP.NET a přidat ovládací prvky

V této části Vytvoření projektu ASP.NET a vytvořit základní uživatelské rozhraní. Všimněte si, že takto používají kód jazyka Microsoft Visual C# .NET. Chcete-li vytvořit projekt, postupujte takto:
  1. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte v Aplikaci Microsoft Visual Studio .NET a potom klepněte na příkaz Microsoft Visual Studio.NET.
  2. Na stránce Visual Studio .NET Start klepněte na položku Nový projekt.
  3. V dialogovém okně Nový projektVisual C# projekty v části Typy projektů, klepnutí na příkaz Webová aplikace ASP.NET v části šablony.
  4. Do pole název zadejte název webové aplikace a potom klepněte na tlačítko OK.
  5. Přidejte následující serverové ovládací prvky do formuláře WWW a nastavit vlastnosti uvedené v tabulce:
    Zmenšit tuto tabulkuRozšířit tuto tabulku
    Ovládací prvekID vlastnostiText vlastnosti
    PopiseklblLastNameZadejte příjmení Autor:
    Textové poletxtLastName%
    TlačítkobtnGetAuthorsZískat autoři
    PopiseklblRowCount(Počet řádků)

  6. Přetáhněte ovládací prvek DataGrid serveru ze sady nástrojů do webového formuláře a poté nastavte vlastnost název na GrdAuthors.
  7. Klepněte na tabulku pravým tlačítkem myši a potom klepněte na tlačítko Automatické úpravy.
  8. Klepněte na položku Professional 1 schématu a potom klepněte na tlačítko OK.

Vytvořit GetAuthorsByLastName uložená procedura

Použít následující kód jazyka Transact-SQL k vytvoření GetAuthorsByLastName uložený postup:
Use Pubs
Go
Create Procedure GetAuthorsByLastName (@au_lname varchar(40), @RowCount int output)  
as 

select * from authors where au_lname like @au_lname; 

/* @@ROWCOUNT returns the number of rows that are affected by the last statement. */ 
select @RowCount=@@ROWCOUNT
				
tento kód obsahuje dva parametry: @ au_lname a @ RowCount. Parametr @ au_lname je vstupní parametr, který získá vyhledávací řetězec, chcete-li provést hledání "jako" v tabulce autoři. Parametr @ RowCount je výstupní parametr, který používá proměnnou @@ ROWCOUNT získat ovlivněné řádky.

Vytvoření a spuštění uložené procedury

Chcete-li získat přístup k databázím serveru SQL Server, je nutné importovat jmenný prostor System.data.SqlClient, poskytující nové objekty, jako například SqlDataReader a SqlDataAdapter objekty. SqlDataReader můžete použít pouze pro předávání datového proudu řádků číst z databáze serveru SQL Server. Vlastnost DataAdapter představuje sadu příkazů dat a připojení databáze, které můžete použít k vyplnění objektu DataSet a k aktualizaci databáze serveru SQL Server.

ADO.NET zavádí také objekt DataSet, který je rezidentní v paměti znázornění dat, které poskytuje konzistentní a relační programovací model bez ohledu na zdroj dat. Kód v tomto oddílu používá všechny tyto objekty.
  1. Poklepejte na webový formulář.
  2. Přidejte následující kód (pomocí směrnic) v části prohlášení webový formulář, který se zobrazí v horní části okna kód:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Přesvědčte se, zda existuje uložené procedury a vytvoření nové uložené procedury, pomocí objektu SqlCommand s objektem SqlDataReader. SqlCommand slouží ke spuštění všechny příkazy SQL v databázi. Potom voláním metody ExecuteReader z SqlCommand vrátíte SqlDataReader, která obsahuje odpovídající řádky pro dotaz.

    Přidejte následující kód v události Page_Load webový formulář:
    	private void Page_Load(object sender, System.EventArgs e)
    	{
    		// Only run this code the first time the page is loaded.
    		// The code inside the IF statement is skipped when you resubmit the page.
    		if (!IsPostBack)
    		{
    			//Create a connection to the SQL Server; modify the connection string for your environment
    			//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    			SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    			// Create a Command object, and then set the connection.
    			// The following SQL statements check whether a GetAuthorsByLastName  
    			// stored procedure already exists.
    			SqlCommand MyCommand = new SqlCommand("select * from sysobjects where id = object_id(N'GetAuthorsByLastName')" +
    			"  and OBJECTPROPERTY(id, N'IsProcedure') = 1", MyConnection);
    
    			// Set the command type that you will run.
    			MyCommand.CommandType = CommandType.Text;
    
    			// Open the connection.
    			MyCommand.Connection.Open();
    
    			// Run the SQL statement, and then get the returned rows to the DataReader.
    			SqlDataReader MyDataReader = MyCommand.ExecuteReader();
    
    			// If any rows are returned, the stored procedure that you are trying 
    			// to create already exists. Therefore, try to create the stored procedure
    			// only if it does not exist.
    			if(!MyDataReader.Read())
    			{
    				MyCommand.CommandText = "create procedure GetAuthorsByLastName" + 
    					" (@au_lname varchar(40), select * from authors where" +
    					" au_lname like @au_lname; select @RowCount=@@ROWCOUNT";
    				MyDataReader.Close();
    				MyCommand.ExecuteNonQuery();
    			}
    			else
    			{
    				MyDataReader.Close();
    			}
    
    			MyCommand.Dispose();  //Dispose of the Command object.
    			MyConnection.Close(); //Close the connection.
    		}
    
    		// Add the event handler to the Button_Click event.
    		this.btnGetAuthors.Click += new System.EventHandler(this.btnGetAuthors_Click);
    	}
    					
  4. Volání uložené procedury v případě klepnutí na tlačítko btnGetAuthors a spuštění uložené procedury pomocí objektu SqlDataAdapter. Musíte vytvořit parametry uložené procedury a připojit ji ke kolekci Parametry objektu SqlDataAdapter.

    Po události Page_Load přidejte následující kód:
    	private void btnGetAuthors_Click(object sender, System.EventArgs e)
    	{
    		//Create a connection to the SQL Server; modify the connection string for your environment.
    		//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    		SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    		//Create a DataAdapter, and then provide the name of the stored procedure.
    		SqlDataAdapter MyDataAdapter = new SqlDataAdapter("GetAuthorsByLastName", MyConnection);
    
    		//Set the command type as StoredProcedure.
    		MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
    
    		//Create and add a parameter to Parameters collection for the stored procedure.
    		MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@au_lname", SqlDbType.VarChar, 40));
    
    		//Assign the search value to the parameter.
    		MyDataAdapter.SelectCommand.Parameters["@au_lname"].Value = (txtLastName.Text).Trim();
    
    		//Create and add an output parameter to the Parameters collection. 
    		MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@RowCount", SqlDbType.Int, 4));
    
    		//Set the direction for the parameter. This parameter returns the Rows that are returned.
    		MyDataAdapter.SelectCommand.Parameters["@RowCount"].Direction = ParameterDirection.Output;
    
    		//Create a new DataSet to hold the records.
    		DataSet DS = new DataSet();
    		
    		//Fill the DataSet with the rows that are returned.
    		MyDataAdapter.Fill(DS, "AuthorsByLastName");
    
    		//Get the number of rows returned, and assign it to the Label control.
    		//lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"
    		lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters[1].Value + " Rows Found!";
    
    		//Set the data source for the DataGrid as the DataSet that holds the rows.
    		GrdAuthors.DataSource = DS.Tables["AuthorsByLastName"].DefaultView;
    
    		//NOTE: If you do not call this method, the DataGrid is not displayed!
    		GrdAuthors.DataBind();
    
    		MyDataAdapter.Dispose(); //Dispose the DataAdapter.
    		MyConnection.Close(); //Close the connection.
    	}
    					
  5. V aplikaci Solution Explorer klepněte pravým tlačítkem myši na stránku ASPX a klepněte na příkaz nastavit jako úvodní stránku.
  6. Uložit projekt a klepněte na tlačítko Spustit v aplikaci Visual Studio .NET. Všimněte si, že je zkompilován projektu a že spustí výchozí stránku.
  7. Do textového pole zadejte příjmení autora a potom klepněte na příkaz Načíst Autor. Všimněte si, že se nazývá uložené procedury a že naplnění vrácených řádků DataGrid.

    Můžete zadat vyhledávací řetězce typu SQL Server jako například G %, které vrátí všechny autory podle příjmení, které začínají na písmeno "G"

Poradce při potížích

  • Pokud se nemůžete připojit k databázi, ujistěte se, že ConnectionString správně odkazuje na server, který je spuštěn SQL Server.
  • Pokud můžete připojit k databázi, ale pokud dochází k problémům při pokusu o vytvoření uložené procedury, ověřte, zda máte správná oprávnění k vytvoření uložené procedury v databázi, ke kterému se připojujete.

Vlastnosti

ID článku: 320916 - Poslední aktualizace: 5. prosince 2003 - Revize: 3.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET (included with the .NET Framework)
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Klíčová slova: 
kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB320916 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:320916

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com