Návod: Použití jen uložených procedur (Visual Basic)
Tento názorný postup poskytuje základní komplexní scénář LINQ to SQL pro přístup k datům pouze pomocí uložených procedur. Tento přístup často používají správci databáze k omezení přístupu k úložišti dat.
Poznámka:
Pomocí uložených procedur v aplikacích LINQ to SQL můžete také přepsat výchozí chování, zejména pro Create
, Update
a Delete
procesy. Další informace naleznete v tématu Přizpůsobení operací vložení, aktualizace a odstranění.
Pro účely tohoto názorného postupu použijete dvě metody mapované na uložené procedury v ukázkové databázi Northwind: CustOrdersDetail a CustOrderHist. K mapování dochází při spuštění nástroje příkazového řádku SqlMetal pro vygenerování souboru jazyka Visual Basic. Další informace najdete v části Požadavky dále v tomto názorném postupu.
Tento návod nespoléhá na Návrhář relací objektů. Vývojáři, kteří používají Visual Studio, můžou také použít Návrhář relací objektů k implementaci funkcí uložených procedur. Viz NÁSTROJE LINQ to SQL v sadě Visual Studio.
Poznámka:
Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.
Tento návod byl napsán pomocí vývojového Nastavení jazyka Visual Basic.
Požadavky
Tento názorný postup vyžaduje následující:
Tento názorný postup používá k uložení souborů vyhrazenou složku (c:\linqtest3). Vytvořte tuto složku před zahájením návodu.
Ukázkovou databázi Northwind
Pokud tuto databázi nemáte na vývojovém počítači, můžete ji stáhnout z webu pro stažení microsoftu. Pokyny najdete v tématu Stažení ukázkových databází. Po stažení databáze zkopírujte soubor northwnd.mdf do složky c:\linqtest3.
Soubor kódu jazyka Visual Basic vygenerovaný z databáze Northwind.
Tento návod byl napsán pomocí nástroje SqlMetal s následujícím příkazovým řádkem:
sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize
Další informace najdete v tématu SqlMetal.exe (nástroj pro generování kódu).
Přehled
Tento názorný postup se skládá ze šesti hlavních úloh:
Nastavení řešení LINQ to SQL v sadě Visual Studio
Přidání sestavení System.Data.Linq do projektu
Přidání souboru kódu databáze do projektu
Vytvoření připojení k databázi
Nastavení uživatelského rozhraní
Spuštění a testování aplikace
Vytvoření řešení LINQ to SQL
V tomto prvním úkolu vytvoříte řešení sady Visual Studio, které obsahuje potřebné odkazy na sestavení a spuštění projektu LINQ to SQL.
Vytvoření řešení LINQ to SQL
V nabídce Soubor sady Visual Studio klepněte na tlačítko Nový projekt.
V podokně Typy projektů v dialogovém okně Nový projekt rozbalte položku Visual Basic a klepněte na tlačítko Windows.
V podokně Šablony klikněte na model Windows Forms Aplikace.
Do pole Název zadejte SprocOnlyApp.
Klikněte na OK.
Otevře se návrhář model Windows Forms.
Přidání odkazu na sestavení LINQ to SQL
Sestavení LINQ to SQL není součástí standardní šablony aplikace model Windows Forms. Sestavení budete muset přidat sami, jak je vysvětleno v následujících krocích:
Přidání System.Data.Linq.dll
V Průzkumník řešení klikněte na Zobrazit všechny soubory.
V Průzkumník řešení klepněte pravým tlačítkem myši Na odkazy a klepněte na tlačítko Přidat odkaz.
V dialogovém okně Přidat odkaz klepněte na tlačítko .NET, klepněte na system.Data.Linq sestavení a klepněte na tlačítko OK.
Sestavení se přidá do projektu.
Přidání souboru kódu Northwind do projektu
Tento krok předpokládá, že jste použili nástroj SqlMetal k vygenerování souboru kódu z ukázkové databáze Northwind. Další informace najdete v části Požadavky uvedené výše v tomto názorném postupu.
Přidání souboru kódu northwind do projektu
V nabídce Projekt klepněte na tlačítko Přidat existující položku.
V dialogovém okně Přidat existující položku přejděte do složky c:\linqtest3\northwind.vb a klikněte na tlačítko Přidat.
Do projektu se přidá soubor northwind.vb.
Vytvoření Připojení databáze
V tomto kroku definujete připojení k ukázkové databázi Northwind. Tento návod jako cestu používá c:\linqtest3\northwnd.mdf.
Vytvoření připojení k databázi
V Průzkumník řešení klepněte pravým tlačítkem na Form1.vb a potom klepněte na tlačítko Zobrazit kód.
Class Form1
zobrazí se v editoru kódu.Do bloku kódu zadejte následující kód
Form1
:Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
Nastavení uživatelského rozhraní
V této úloze vytvoříte rozhraní, aby uživatelé mohli spouštět uložené procedury pro přístup k datům v databázi. V aplikaci, kterou vyvíjíte pomocí tohoto názorného postupu, mají uživatelé přístup k datům v databázi pouze pomocí uložených procedur vložených do aplikace.
Nastavení uživatelského rozhraní
Vraťte se do návrháře model Windows Forms (Form1.vb[Design]).
V nabídce Zobrazení klikněte na Panel nástrojů.
Otevře se panel nástrojů.
Poznámka:
Kliknutím na tlačítko AutoHide pushpin zachováte panel nástrojů otevřený, zatímco provedete zbývající kroky v této části.
Přetáhněte dvě tlačítka, dvě textová pole a dva popisky z panelu nástrojů na Form1.
Uspořádejte ovládací prvky jako na doprovodném obrázku. Rozbalte formulář1 tak, aby se ovládací prvky vešly snadno.
Klepněte pravým tlačítkem myši Popisek1 a klepněte na příkaz Vlastnosti.
Změňte vlastnost Text z Label1 na Enter OrderID:.
Stejně jako u Label2 změňte vlastnost Text z Label2 na Enter CustomerID:.
Stejným způsobem změňte vlastnost Text pro Button1 na Podrobnosti objednávky.
Změňte vlastnost Text tlačítka2 na Historii objednávek.
Rozšiřte ovládací prvky tlačítka tak, aby byl veškerý text viditelný.
Zpracování kliknutí na tlačítko
Poklikáním na Podrobnosti objednávky ve formuláři Form1 vytvořte obslužnou rutinu
Button1
události a otevřete editor kódu.Do obslužné rutiny
Button1
zadejte následující kód:' 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 = ""
Teď poklikejte na Button2 ve formuláři Form1 a vytvořte obslužnou rutinu
Button2
události a otevřete editor kódu.Do obslužné rutiny
Button2
zadejte následující kód:' 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 = ""
Testování aplikace
Teď je čas otestovat aplikaci. Mějte na paměti, že váš kontakt s úložištěm dat je omezený na akce, které mohou tyto dvě uložené procedury provést. Tyto akce mají vrátit produkty zahrnuté pro jakékoli ZADANÉ ID objednávky nebo vrátit historii produktů objednaných pro id zákazníka, které zadáte.
Testování aplikace
Stisknutím klávesy F5 spusťte ladění.
Zobrazí se formulář 1.
Do pole Zadejte ID objednávky zadejte 10249 a klepněte na tlačítko Podrobnosti objednávky.
Okno se zprávou obsahuje produkty zahrnuté v objednávce 10249.
Kliknutím na tlačítko OK zavřete okno se zprávou.
Do pole Zadejte ID zákazníka zadejte
ALFKI
a klepněte na tlačítko Historie objednávek.Pole se zprávou obsahuje historii objednávek pro zákazníka ALFKI.
Kliknutím na tlačítko OK zavřete okno se zprávou.
Do pole Zadejte ID objednávky zadejte
123
a klepněte na tlačítko Podrobnosti objednávky.V poli se zprávou se zobrazí zpráva Bez výsledků.
Kliknutím na tlačítko OK zavřete okno se zprávou.
V nabídce Ladění klepněte na tlačítko Zastavit ladění.
Relace ladění se zavře.
Pokud jste experimentování dokončili, můžete po zobrazení výzvy kliknout na Zavřít projekt v nabídce Soubor a projekt uložit.
Další kroky
Tento projekt můžete vylepšit provedením některých změn. Můžete například zobrazit seznam dostupných uložených procedur v seznamu a nechat uživatele vybrat, které procedury se mají provést. Výstup sestav můžete také streamovat do textového souboru.