HOW TO: Chiamata SqlServer Stored procedure in ASP.NET utilizzando Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 320916 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come utilizzare ASP.NET e ADO.NET con Visual C# .NET per creare e chiamare un computer che esegue Microsoft SQL Server stored procedure con un parametro di input e un parametro di output.

L'esempio riportato di codice in questo articolo controlla innanzitutto se la stored procedure che verrÓ creata esiste nel database pubs incluso in un'installazione standard di Microsoft SQL Server. La stored procedure non esiste, viene creata una stored procedure che accetta un parametro per la ricerca della tabella authors in base al cognome e restituisca le righe corrispondenti e i numeri di righe che vengono restituiti in un parametro di output.

In questo articolo viene anche descritto come creare un Web Form che fornisca una semplice interfaccia utente. Il Web Form contiene gli elementi seguenti:
  • Una casella di testo in cui l'utente digita la condizione di ricerca.
  • Un controllo DataGrid Visualizza i risultati di ricerca.
  • Un controllo di etichetta che visualizza il numero di record restituiti.
  • Controllo pulsante che chiama la stored procedure quando viene fatto clic sul pulsante.

Requisiti

Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack necessari:
  • Microsoft SQL Server versione 7.0 o versione successiva
  • Microsoft Visual Studio .NET
  • Microsoft Visual C# .NET
  • Autorizzazioni per creare la stored procedure nel database
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • ASP.NET
  • Stored procedure di SQL Server

Creazione di un progetto ASP.NET e aggiunta di controlli

In questa sezione verrÓ creato un progetto ASP.NET e generata l'interfaccia utente di base. Si noti che questa procedura utilizza codice Microsoft Visual C#. NET. Per creare il progetto, attenersi alla seguente procedura:
  1. Fare clic su Start , scegliere programmi , scegliere Microsoft Visual Studio .NET e quindi fare clic su Microsoft Visual Studio. NET .
  2. Nella pagina iniziale di Visual Studio .NET scegliere Nuovo progetto .
  3. Nella finestra di dialogo Nuovo progetto scegliere Progetti di Visual C# in Tipi progetto , quindi Applicazione Web ASP.NET in modelli .
  4. Nella casella nome digitare un nome per l'applicazione Web e quindi fare clic su OK .
  5. Aggiungere i seguenti controlli server al Web Form, quindi impostare le proprietÓ come sono elencate nella tabella:
    Riduci questa tabellaEspandi questa tabella
    ControlloProprietÓ IDProprietÓ Text
    etichetta lblLastNameImmettere il cognome dell'autore:
    controllo TextBox txtLastName%
    pulsante btnGetAuthorsOttieni autori
    etichetta lblRowCount(Conteggio righe)

  6. Trascinare un controllo server DataGrid dalla casella degli strumenti al Web Form e quindi impostare la proprietÓ Name per GrdAuthors .
  7. Fare clic con il pulsante destro del mouse nella griglia e quindi fare clic su formattazione automatica .
  8. Fare clic su professionale 1 per lo schema e quindi fare clic su OK .

Creazione della stored procedure GetAuthorsByLastName

Utilizzare il seguente codice di Transact-SQL per creare la routine GetAuthorsByLastName memorizzati:
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
				
questo codice sono inclusi due parametri: @ au_lname e @ RowCount. Il parametro @ au_lname Ŕ un parametro di input che ottiene la stringa di ricerca per eseguire una ricerca "like" nella tabella authors . Il parametro @ RowCount Ŕ un parametro di output che utilizza la variabile @@ ROWCOUNT per ottenere le righe interessate.

Creazione ed esecuzione della stored procedure

Per accedere ai database di SQL Server, Ŕ necessario importare lo spazio dei nomi System.Data.SqlClient , che fornisce nuovi oggetti quali SqlDataReader e SqlDataAdapter gli oggetti. ╚ possibile utilizzare SqlDataReader per leggere un flusso di righe di tipo forward-only da un database di SQL Server. DataAdapter rappresenta un insieme di comandi di dati e una connessione di database che Ŕ possibile utilizzare per riempire l'oggetto DataSet e per aggiornare un database SQL Server.

ADO.NET viene inoltre introdotto l'oggetto DataSet , ovvero una rappresentazione residente in memoria dei dati che fornisce un modello di programmazione relazionale coerenza, indipendentemente dall'origine dati. Il codice in questa sezione utilizza tutti questi oggetti.
  1. Fare doppio clic sul Web Form.
  2. Aggiungere il seguente codice (le direttive using ) alla sezione Declaration del Web Form, che viene visualizzata nella parte superiore della finestra del codice:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Per assicurarsi che la stored procedure esista e per creare una nuova stored procedure, utilizzare un oggetto SqlCommand con un oggetto SqlDataReader . ╚ possibile utilizzare SqlCommand per eseguire i comandi SQL sul database. Quindi chiamare il metodo ExecuteReader SqlCommand per restituire SqlDataReader , che contiene righe corrispondenti per la query.

    Aggiungere il codice riportato di seguito nell'evento Page_Load del Web Form:
    	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. Chiamare la stored procedure nell'evento Click del pulsante btnGetAuthors e quindi utilizzare l'oggetto SqlDataAdapter per eseguire la stored procedure. ╚ necessario creare parametri per stored procedure e accodarla all'insieme di parametri dell'oggetto SqlDataAdapter .

    Aggiungere il seguente codice dopo l'evento Page_Load :
    	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. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla pagina aspx e quindi fare clic su Imposta come pagina iniziale .
  6. Salvare il progetto e quindi fare clic su Start in Visual Studio. NET. Si noti che il progetto viene compilato e che la pagina predefinita Ŕ in esecuzione.
  7. Digitare il cognome dell'autore nella casella di testo e quindi fare clic su Ottieni autori . Si noti che viene chiamata la stored procedure e che le righe restituite compilano il DataGrid .

    ╚ possibile utilizzare stringhe di ricerca di tipo SQL Server come G % , che restituisce tutti gli autori in base al cognome che inizia con la lettera "G"

Risoluzione dei problemi

  • Se non Ŕ possibile connettersi al database, assicurarsi che che ConnectionString correttamente punta al server che esegue SQL Server.
  • Se Ŕ possibile connettersi al database, ma se si verificano problemi quando si tenta di creare la stored procedure, assicurarsi che Ŕ necessario gli autorizzazioni corrette creare stored procedure nel database a cui ci si connette.

ProprietÓ

Identificativo articolo: 320916 - Ultima modifica: venerdý 5 dicembre 2003 - Revisione: 3.3
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi:á
kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB320916 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 320916
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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