DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 320916 - Geändert am: Freitag, 5. Dezember 2003 - Version: 3.3

 

Auf dieser Seite

Zusammenfassung

Dieser Artikel veranschaulicht, wie ASP.NET und ADO.NET mit Visual c# .NET verwenden, um erstellen und Aufrufen von einer Microsoft SQL Server gespeicherten Prozedur mit einem Eingabeparameter und ein Ausgabeparameter.

Das Codebeispiel in diesem Artikel prüft zunächst, ob die gespeicherte Prozedur, die Sie erstellen in der Pubs -Datenbank vorhanden ist die eine standardmäßige Microsoft SQL Server-Installation enthalten ist. Wenn die gespeicherte Prozedur nicht vorhanden ist, erstellt der Code eine gespeicherte Prozedur, die ein Parameter die Authors -Tabelle auf der Grundlage des letzten Namens zu suchen und gibt das übereinstimmende Zeilen und die Anzahl der Zeilen, die in einem Ausgabeparameter zurückgegeben werden.

Außerdem erfahren Sie in diesem Artikel, wie Sie ein Webformular erstellen können, das Ihnen eine einfache Benutzeroberfläche bietet. Das Webformular enthält die folgenden Elemente:
  • Ein Textfeld, in denen der Benutzer die Suchbedingung eingibt.
  • Ein DataGrid -Steuerelement, die Suchergebnisse angezeigt.
  • Ein Label -Steuerelement, die Anzahl der zurückgegebenen Datensätze anzeigt.
  • Ein Button -Steuerelement, das die gespeicherte Prozedur aufruft, wenn auf die Schaltfläche geklickt wird.

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Service Packs, die erforderlich sind:
  • Microsoft SQL Server Version 7.0 oder höher
  • Microsoft Visual Studio .NET
  • Microsoft Visual c# .NET
  • Berechtigungen zum Erstellen der gespeicherten Prozedur in der Datenbank
In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:
  • ASP.NET
  • Gespeicherte SQL Server-Prozeduren

ASP.NET-Projekt erstellen und Steuerelemente hinzufügen

In diesem Abschnitt erstellen Sie ein ASP.NET-Projekt und bauen die grundlegende Benutzeroberfläche dafür auf. Beachten Sie, dass folgendermaßen Microsoft Visual c#-Code verwenden. Gehen Sie folgendermaßen vor, um das Projekt zu erstellen:
  1. Klicken Sie auf Start , zeigen Sie auf Programme , zeigen Sie auf Microsoft Visual Studio .NET, und klicken Sie dann auf Microsoft Visual Studio .NET .
  2. Klicken Sie auf der Seite Start von Visual Studio .NET auf Neues Projekt .
  3. Klicken Sie im Dialogfeld Neues Projekt klicken Sie unter Projekttypen auf Visual C#-Projekte , und klicken Sie dann unter Vorlagen auf ASP.NET-Webanwendung .
  4. Geben Sie in das Feld Name einen Namen für Ihre Webanwendung und klicken Sie dann auf OK .
  5. Fügen Sie dem Webformular die folgenden Serversteuerelemente hinzu, und legen Sie die Eigenschaften so fest, wie sie in der Tabelle aufgeführt sind:
    Tabelle minimierenTabelle vergrößern
    SteuerelementID-EigenschaftText-Eigenschaft
    Beschriftung lblLastNameNachnamen des Autors eingeben:
    Textfeld txtLastName%
    Schaltfläche btnGetAuthorsAutoren abrufen
    Beschriftung lblRowCount(Zeilenanzahl)

  6. Ziehen Sie ein DataGrid -Webserversteuerelement aus der Toolbox zu dem Webformular, und setzen Sie die Eigenschaft Name auf GrdAuthors .
  7. Klicken Sie mit der rechten Maustaste auf das Raster, und klicken Sie dann auf AutoFormat .
  8. Klicken Sie auf Professional 1 für das Schema, und klicken Sie dann auf OK .

Erstellen der gespeicherten Prozedur "GetAuthorsByLastName"

Verwenden Sie folgenden Transact-SQL-Code zum Erstellen der GetAuthorsByLastName, die gespeicherte Prozedur:
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
				
dieser Code enthält zwei Parameter: @ Au_lname und @ RowCount. Der Parameter @ Au_lname ist ein Eingabeparameter, der die Suchzeichenfolge für eine Suche "like" in der Authors -Tabelle abruft. Der Parameter @ RowCount ist ein Ausgabeparameter, der die Variable @@ ROWCOUNT, verwendet um die betroffenen Zeilen zu erhalten.

Gespeicherte Prozedur erstellen und ausführen

Um SQL Server-Datenbanken zuzugreifen, müssen Sie den System.Data.SqlClient -Namespace importieren, der neue Objekte wie SqlDataReader und SqlDataAdapter -Objekte enthält. SqlDataReader können Sie das Lesen eines Vorwärtsstreams von Zeilen aus einer SQL Server-Datenbank. DataAdapter stellt einen Satz von Datenbefehlen und eine Datenbankverbindung, die Sie verwenden können, um das DataSet -Objekt zu füllen und aktualisieren eine SQL Server-Datenbank.

ADO.NET führt auch das DataSet -Objekt, das eine speicherresidente Darstellung von Daten ist, die ein konsistentes, relationales Programmiermodell unabhängig von der Datenquelle bereitstellt. Der Code in diesem Abschnitt verwendet alle diese Objekte.
  1. Doppelklicken Sie auf das Webformular.
  2. Fügen Sie in den Deklarationsbereich Web Forms, die am Anfang der Code-Fenster angezeigt wird, den folgenden Code (der using -Direktiven):
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Um sicherzustellen, dass die gespeicherte Prozedur vorhanden ist und eine neue gespeicherte Prozedur zu erstellen, verwenden Sie ein SqlCommand -Objekt mit einem SqlDataReader -Objekt. SqlCommand können Sie alle SQL-Befehle für die Datenbank ausführen. Dann rufen Sie die ExecuteReader -Methode des SqlCommand um SqlDataReader zurückzugeben, das übereinstimmende Zeilen für die Abfrage enthält.

    Fügen Sie folgenden Code im Page_Load -Ereignis des Web Forms:
    	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. Rufen Sie die gespeicherte Prozedur im Click -Ereignis der Schaltfläche BtnGetAuthors , und verwenden Sie dann das SqlDataAdapter -Objekt, um die gespeicherte Prozedur auszuführen. Sie müssen Parameter für die gespeicherte Prozedur erstellen und die Parameters -Auflistung des SqlDataAdapter -Objekts angefügt.

    Fügen Sie den folgenden Code nach dem Page_Load -Ereignis:
    	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. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die ASPX-Seite, und klicken Sie als Startseite festlegen .
  6. Speichern Sie das Projekt, und klicken Sie dann auf in Visual Studio .NET Starten . Beachten Sie, dass das Projekt kompiliert ist und ob die Standardseite ausgeführt wird.
  7. Geben Sie den Autor letzten Namen in das Textfeld, und klicken Sie dann auf Abrufen Autor . Beachten Sie, dass die gespeicherte Prozedur aufgerufen wird und, dass die zurückgegebenen Zeilen DataGrid füllen.

    Sie können Suchzeichenfolgen SQL Server-Typ, z. B. G % , bereitstellen, die alle Autoren nach Nachnamen zurückgibt, das mit dem Buchstaben "G" beginnen.

Problembehandlung

  • Wenn Sie keine Verbindung zur Datenbank herstellen können, stellen Sie sicher, dass der ConnectionString ordnungsgemäß auf dem Server verweist, auf dem SQL Server ausgeführt wird.
  • Wenn Sie eine Verbindung zur Datenbank herstellen können, jedoch bei Problemen beim Erstellen der gespeicherten Prozedur, dass sicherstellen haben Sie die richtigen Berechtigungen gespeicherte Prozeduren in der Datenbank zu erstellen, mit denen Sie eine Verbindung herstellen.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB320916 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 320916  (http://support.microsoft.com/kb/320916/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store
Folgen Sie uns: