Freigeben über


Exemplarische Vorgehensweise: Ausschließliches Verwenden von gespeicherten Prozeduren (Visual Basic) (LINQ to SQL)

Aktualisiert: November 2007

Diese exemplarische Vorgehensweise stellt ein grundlegendes End-to-End-LINQ to SQL-Szenario für den Datenzugriff mithilfe von gespeicherten Prozeduren bereit. Dieser Ansatz wird oft von Datenbankadministratoren verwendet, um den Zugriff auf den Datenspeicher einzuschränken.

Hinweis:

Sie können gespeicherte Prozeduren außerdem in LINQ to SQL-Anwendungen verwenden, um das Standardverhalten zu umgehen. Dies gilt vor allem für die Prozesse Create, Update und Delete. Weitere Informationen finden Sie unter Anpassen von Insert-, Update- und Delete-Operationen (LINQ to SQL).

Im Rahmen dieser exemplarischen Vorgehensweise verwenden Sie zwei Methoden, die in der Beispieldatenbank Northwind gespeicherten Prozeduren zugeordnet wurden: CustOrdersDetail und CustOrderHist. Die Zuordnung tritt auf, wenn Sie das SQLMetal-Befehlszeilentool ausführen, um eine Visual Basic-Datei zu generieren. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter hinten in dieser exemplarischen Vorgehensweise.

Diese exemplarische Vorgehensweise basiert nicht auf O/R-Designer. Entwickler, die mit Visual Studio arbeiten, können auch O/R-Designer verwenden, um die Funktionalität einer gespeicherten Prozedur zu implementieren.

Hinweis:

Ihr Computer zeigt für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung möglicherweise andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Diese exemplarische Vorgehensweise wurde mithilfe von Visual Basic-Entwicklungseinstellungen geschrieben.

Vorbereitungsmaßnahmen

Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:

  • Diese exemplarische Vorgehensweise verwendet einen dedizierten Ordner ("c:\linqtest3") als Speicherort für Dateien. Erstellen Sie diesen Ordner, bevor Sie die exemplarische Vorgehensweise starten.

  • Die Beispieldatenbank Northwind.

    Befindet sich diese Datenbank nicht auf Ihrem Entwicklungscomputer, können Sie diese von der Microsoft Downloadsite herunterladen. Anweisungen dazu finden Sie unter Herunterladen von Beispieldatenbanken (LINQ to SQL). Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei northwnd.mdf in den Ordner c:\linqtest3.

  • Eine von der Datenbank Northwind generierte Visual Basic-Codedatei.

    Diese exemplarische Vorgehensweise wurde mithilfe des SQLMetal-Tools mit der folgenden Befehlszeile geschrieben:

    sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize

    Weitere Informationen finden Sie unter Tool zur Codegenerierung (SqlMetal.exe).

Übersicht

Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:

  • Einrichten der LINQ to SQL-Lösung in Visual Studio.

  • Hinzufügen der System.Data.Linq-Assembly zum Projekt

  • Hinzufügen der Datenbank-Codedatei zum Projekt.

  • Erstellen einer Verbindung mit der Datenbank

  • Einrichten der Benutzeroberfläche.

  • Ausführen und Testen der Anwendung.

Erstellen einer LINQ to SQL-Lösung

In dieser ersten Aufgabe erstellen Sie eine Visual Studio-Lösung, die die erforderlichen Verweise zur Erstellung und Ausführung eines LINQ to SQL-Projekts enthält.

So erstellen Sie eine LINQ to SQL-Lösung

  1. Klicken Sie im Visual Studio-Menü Datei auf Neues Projekt.

  2. Erweitern Sie im Bereich Projekttypen des Dialogfelds Neues Projekt den Eintrag Visual Basic, und klicken Sie dann auf Windows.

  3. Klicken Sie im Bereich Vorlagen auf Windows Forms-Anwendung.

  4. Geben Sie im Feld NameSprocOnlyApp ein.

  5. Klicken Sie auf OK.

    Der Windows Forms Designer wird geöffnet.

Hinzufügen des LINQ to SQL-Assembly-Verweises

Die LINQ to SQL-Assembly ist nicht in der Standardvorlage für Windows Forms-Anwendungen enthalten. Sie müssen die Assembly selbst hinzufügen. Siehe hierzu die folgenden Schritte:

So fügen Sie die Datei System.Data.Linq.dll hinzu

  1. Klicken Sie im Projektmappen-Explorer auf Alle Dateien anzeigen.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.

  3. Klicken Sie im Dialogfeld Verweis hinzufügenauf .NET, klicken Sie auf die System.Data.Linq-Assembly und dann auf OK.

    Dem Projekt wird die Assembly hinzugefügt.

Hinzufügen der Northwind-Codedatei zum Projekt.

Bei diesem Schritt wird davon ausgegangen, dass Sie das SQLMetal-Tool zum Erzeugen einer Codedatei aus der Beispieldatenbank Northwind verwendet haben. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter vorn in dieser exemplarischen Vorgehensweise.

So fügen Sie die Northwind-Codedatei dem Projekt hinzu.

  1. Klicken Sie im Menü Projekt auf Vorhandenes Element hinzufügen.

  2. Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zu c:\linqtest3\northwind.vb, und klicken Sie dann auf Hinzufügen.

    Die Datei northwind.vb wird dem Projekt hinzugefügt.

Erstellen von Datenbankverbindungen

In diesem Schritt definieren Sie die Verbindung zur Beispieldatenbank Northwind. Diese exemplarische Vorgehensweise verwendet "c:\linqtest3\northwnd.mdf" als Pfad.

So erstellen Sie die Datenbankverbindung

  1. Klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf Form1.vb, und klicken Sie dann auf Code anzeigen.

    Class Form1 erscheint im Code-Editor.

  2. Geben Sie den folgenden Code in den Form1-Code-Block ein.

    Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
    

Einrichten der Benutzeroberfläche.

In diesem Schritt erstellen Sie eine Benutzeroberfläche, sodass Benutzer durch Ausführen gespeicherter Prozeduren auf die Daten in der Datenbank zugreifen können. In den von Ihnen hier entwickelten Anwendungen können Benutzer nur mithilfe der in der Anwendung eingebetteten gespeicherten Prozeduren auf die Daten zugreifen.

So richten Sie die Benutzeroberfläche ein

  1. Kehren Sie zum Windows Forms Designer (Form1.vb[Design]) zurück.

  2. Klicken Sie im Menü Ansicht auf Toolbox.

    Die Toolbox wird geöffnet.

    Hinweis:

    Klicken Sie auf Automatisch verbergen, damit die Toolbox während der folgenden Schritte geöffnet bleibt.

  3. Ziehen Sie zwei Schaltflächen, zwei Textfelder und zwei Bezeichnungen von der Toolbox auf Form1.

    Ordnen Sie die Steuerelemente wie in der Abbildung an. Erweitern Sie Form1, damit die Steuerelemente platziert werden können.

  4. Klicken Sie mit der rechten Maustaste auf Label1, und klicken Sie dann auf Eigenschaften.

  5. Ändern Sie die Text-Eigenschaft von Label1 in Enter OrderID:.

  6. Ändern Sie auf die gleiche Weise bei lLabel2 die Text-Eigenschaft von Label2 in Enter CustomerID:.

  7. Ändern Sie auf die gleiche Weise die Text-Eigenschaft für Button1 in Order Details .

  8. Ändern Sie die Text-Eigenschaft für Button2 in Order History.

    Erweitern Sie die Schaltflächen-Steuerelemente, damit der ganze Text sichtbar ist.

Dialogfeld

Verarbeitung von Mausklicks auf die Schaltflächen

  1. Doppelklicken Sie Order Details auf Form1, um den Button1-Ereignishandler zu erstellen und den Code-Editor zu öffnen.

  2. Geben Sie den folgenden Code in den Button1-Ereignishandler ein.

    ' Declare a variable to hold the contents of
    ' TextBox1 as an argument for the stored
    ' procedure.
    Dim parm As String = TextBox1.Text
    
    ' Declare a variable to hold the results returned
    ' by the stored procedure.
    Dim custQuery = db.CustOrdersDetail(parm)
    
    ' Clear the message box of previous results.
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    ' Execute the stored procedure and store the results.
    For Each custOrdersDetail As CustOrdersDetailResult In custQuery
        msg &= custOrdersDetail.ProductName & vbCrLf
    Next
    
    ' Display the results.
    If msg = "" Then
        msg = "No results."
    End If
    response = MsgBox(msg)
    
    ' Clear the variables before continuing.
    parm = ""
    TextBox1.Text = ""
    
  3. Doppelklicken Sie jetzt auf Button2 in Form1, um den Button2-Ereignishandler zu erstellen und den Code-Editor zu öffnen.

  4. Geben Sie den folgenden Code in den Button2-Ereignishandler ein.

    ' Comments in the code for Button2 are the same
    ' as for Button1.
    Dim parm As String = TextBox2.Text
    
    Dim custQuery2 = db.CustOrderHist(parm)
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    For Each custOrdHist As CustOrderHistResult In custQuery2
        msg &= custOrdHist.ProductName & vbCrLf
    Next
    
    If msg = "" Then
        msg = "No results."
    End If
    
    response = MsgBox(msg)
    parm = ""
    TextBox2.Text = ""
    

Testen der Anwendung

Nun können Sie die Anwendung testen. Beachten Sie, dass die Verbindung zum Datastore auf die Aktionen der beiden gespeicherten Prozeduren beschränkt ist. Diese Aktionen geben die Produkte zu der von Ihnen eingegebenen OrderID und die Produkthistorie zu der von Ihnen eingegebenen CustomerID zurück.

So testen Sie die Anwendung

  1. Drücken Sie die Taste F5, um mit dem Debuggen zu beginnen.

    Form1 wird angezeigt.

  2. Geben Sie im Feld Enter OrderID10249 ein, und klicken Sie auf Order Details.

    Ein Meldungsfeld listet die in Bestellung 10249 enthaltenen Produkte auf.

    Klicken Sie auf OK, um das Dialogfeld zu schließen.

  3. Geben Sie im Feld Enter CustomerIDALFKI ein, und klicken Sie dann auf Order History.

    Ein Meldungsfeld mit der Bestellhistorie für Kunde ALFKI wird angezeigt.

    Klicken Sie auf OK, um das Dialogfeld zu schließen.

  4. Geben Sie im Feld Enter OrderID123 ein, und klicken Sie auf Order Details.

    Ein Meldungsfeld zeigt "Keine Ergebnisse" an.

    Klicken Sie auf OK, um das Dialogfeld zu schließen.

  5. Klicken Sie im Menü Debuggen auf Debuggen beenden.

    Die Debugsitzung schließt.

  6. Wenn Sie Ihre Versuche abgeschlossen haben, können Sie auf Projekt schließen im Menü Datei klicken und Ihr Projekt ggf. speichern.

Nächste Schritte

Sie können dieses Projekt mit einigen Änderungen erweitern. Sie können beispielsweise die verfügbaren gespeicherten Prozeduren in einem Listenfeld aufführen, sodass der Benutzer diese auswählen kann. Sie könnten auch die Ausgabe von Berichten in eine Textdatei umleiten.

Siehe auch

Konzepte

Lernen mit exemplarischen Vorgehensweisen (LINQ to SQL)

Weitere Ressourcen

Gespeicherte Prozeduren (LINQ to SQL)