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

Diese exemplarische Vorgehensweise stellt ein grundlegendes und umfassendes 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 überschreiben. Dies gilt vor allem für die Prozesse Create, Update und Delete. Weitere Informationen finden Sie unter Anpassen von Insert-, Update- und Delete-Vorgängen.

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 unten in dieser exemplarischen Vorgehensweise.

Diese exemplarische Vorgehensweise basiert nicht auf dem Objektrelationaler Designer. Entwickler*innen, die mit Visual Studio arbeiten, können auch O/R-Designer verwenden, um die Funktionalität einer gespeicherten Prozedur zu implementieren. Weitere Informationen finden Sie unter LINQ to SQL-Tools in Visual Studio.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

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

Voraussetzungen

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 hierzu finden Sie unter Herunterladen von Beispieldatenbanken. 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 SqlMetal.exe (Tool zur Codegenerierung).

Übersicht

Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:

  • Einrichten der LINQ to SQL-Projektmappe 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-Projektmappe, 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 in Visual Studio im 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. Klicke auf OK.

    Der Windows Forms Designer wird geöffnet.

Hinzufügen des LINQ to SQL-Assemblyverweises

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ügen auf .NET, 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 oben 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 Projektmappen-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 dieser Aufgabe 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 die Ortsmarke AutoAusblenden, 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 Label2 die Text-Eigenschaft von Label2 in Enter CustomerID:.

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

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

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

Verarbeitung von Mausklicks auf die Schaltflächen

  1. Doppelklicken Sie Auftragsdetails 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 Auftragsdetails.

    Ein Meldungsfeld listet die in Bestellung 10249 enthaltenen Produkte auf.

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

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

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

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

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

    Ein Meldungsfeld zeigt "Keine Ergebnisse" an.

    Klicken Sie auf OK , um das Meldungsfeld 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