<asp:AccessDataSource> ID="MySourcName" Runat="server" DataFile="MyMDBName.mdb" SelectCommand="SELECT MyField1, MyField2 FROM MyTable"> </asp:AccessDataSource> |
<html> <Kopf> <Titel>TIO ch02-1 MDB-Daten anzeigen</Titel> <Kopf> <Körper> <h3>ch02 TIO 2 Demonstration der Verbindung zu einer MDB-Quelle </h3> <Körper> </html> |
<%@ page language="VB" %> <html> <head><title>ch02 TIO 2 MDB-Daten anzeigen</title></head> <Körper> <h3>ch02 TIO 2 Demonstration der Verbindung zu einer MDB-Quelle </h3> <form runat="server"> <asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server" selectcommand="Aus Produkten * auswählen" datafile="~/App_Data/Northwind.mdb"> </asp:accessdatasource> <asp:gridview id="NorthwindProductsGridView" runat="server" datasourceid="NorthwindProductsAccDataSource"> </asp:gridview> </form></body></html> |
<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server" selectcommand="Selcet * From [Sales by Category] " Datafile="~/App_Data/Northwind.mdb"> </asp:accessdatasource> |
(14) Öffnen Sie den Browser und sehen Sie sich die Seite an.
Beispielhinweis Nr. 2: Stellen Sie eine Verbindung zu MDB her und zeigen Sie Daten mit GridView an
Sie haben zwei Steuerelemente auf der Seite. Die erste, AccessDataSource, übernimmt die gesamte Verbindungsarbeit zu den ADO.NET-Objekten, die eine Verbindung zur JET-Engine herstellen, die mit der MDB-Datei interagiert. Das zweite ist GridView, das zum Abrufen von Daten und zum Konvertieren ihres Formats in ein HTML-Format verwendet wird, das auf der Seite angezeigt werden kann. Bitte beachten Sie, dass es sehr wichtig ist, jedem Steuerelement einen aussagekräftigen Namen (ID) zu geben. Anschließend müssen Sie sicherstellen, dass das datengebundene Steuerelement (GridView) seine DataSourceID-Eigenschaft verwendet, um auf die ID der AccessDataSource zu verweisen, um die AccessDataSource als Datenquelle zu verwenden.
Das Anzeigen von Daten aus einer Abfrage ist nicht sehr schwierig; in Access können Sie Abfragenamen anstelle von Tabellennamen verwenden. Hier gibt es zwei Anleitungen. Erstens: Wenn der Name einer Tabelle oder Abfrage Leerzeichen enthält, muss der gesamte Name in eckige Klammern eingeschlossen werden. Zweitens erfordern Abfragen, die Benutzereingaben erfordern (z. B. „Umsätze in einem bestimmten Jahr“ erfordern die Kenntnis des Jahres), Techniken, die den Rahmen dieses Buches sprengen.
Nachdem Sie die vorherigen Schritte ausgeführt haben, können Sie die vom AccessDataSource-Steuerelement erhaltenen Daten auf der Seite sehen. In späteren Kapiteln wird GridView ausführlich behandelt, aber dieses Kapitel wird sich weiterhin auf Datenquellensteuerelemente konzentrieren.
Wählen Sie Variablen in Anweisungen aus
Beim Erstellen einer Datenquelle in VWD werden Sie vom Assistenten aufgefordert, die anzuzeigenden Spalten anzugeben oder eine benutzerdefinierte SQL-Anweisung zu erstellen. Im vorherigen „Try It Away“ haben Sie einfach ein paar Spalten ausgewählt. Komplexere SQL-Anweisungen können auf verschiedene Arten angegeben werden:
● Verwenden Sie interaktive Dialogfelder
● Geben Sie benutzerdefinierte SQL-Anweisungen in den AccessDataSource-Assistenten ein (aufgerufen durch die Komfortaufgabe „Datenquelle konfigurieren“ im Steuerelement).
● Geben Sie Anweisungen in das Eigenschaftenraster ein
● Geben Sie Anweisungen direkt in das Markup der Quellansicht ein
Die Auswahl von Spalten im Access DataSource-Assistenten ist eine bevorzugte Technik für einfache Abfragen, die eine oder mehrere Spalten aus einer separaten Tabelle zurückgeben, da dadurch Typografie- und Syntaxfehler reduziert werden (siehe Abbildung 2-3). In diesem Assistenten können Sie den Namen der Tabelle oder Abfrage aus der Dropdown-Liste „Name“ auswählen. Anschließend können Sie die erforderlichen Spalten in der Tabelle oder Abfrage auswählen, indem Sie alle Spalten (*) oder eine beliebige Spaltengruppe auswählen. Wenn Sie auf die Schaltfläche „Sortieren nach“ klicken, können Sie nach jeder Spalte in der Datenquelle sortieren. Wenn für die erste Spalte eine Einschränkung besteht, wird das unter „Dann nach“ ausgewählte Feld verwendet. Beachten Sie beim Auswählen von Optionen im Assistenten, dass die tatsächliche SQL-Syntax für SelectCommand auch in einem schreibgeschützten Textfeld angezeigt wird.
Abbildung 2-3
Sie können die Schaltfläche WHERE im Assistenten verwenden, um eine SQL-Anweisung mit Parametern zu erstellen. Dieser Teil wird in Kapitel 9 vorgestellt. Wir werden diese Auswahl vorerst überspringen, aber es ist wichtig, dass Sie vor der Bereitstellung diese Parameter verwenden, die später in diesem Buch besprochen werden. Vermeiden Sie auf einer bereitgestellten Site, Benutzereingaben direkt mit SQL-Anweisungen zu verknüpfen. Wenn Sie Parameterprobleme ignorieren, ist Ihre Website SQL-Injection-Angriffen ausgesetzt. Diese Angriffstechnik verwendet falsche Zeichen aus Benutzereingaben, um die ursprüngliche SQL-Anweisung ungültig zu machen und sie dann durch eine destruktive Anweisung zu ersetzen. Sie können Parametersammlungen verwenden, um Benutzereingaben an ADO.NET-Parametersammlungen zu senden, die die Funktionalität von Sammlungen nutzen können, um SQL-Injection-Probleme zu reduzieren.
Obwohl der Assistent zum Konfigurieren von Datenquellen viele Optionen zur schnellen Erstellung von SQL-Anweisungen bietet, müssen Sie manchmal die SQL-Anweisung dennoch direkt in den markierten SelectCommand eingeben (oder ändern). Der AccessDataSource-Assistent ermöglicht diese Vorgänge. Auf der Seite des Assistenten zum Auswählen von Tabellen, Abfragen und Spalten können Sie das Optionsfeld „Angeben einer benutzerdefinierten SQL-Anweisung oder gespeicherten Prozedur“ auswählen. Nachdem Sie diese Option auf der Seite des Assistenten ausgewählt haben, klicken Sie auf die Schaltfläche „Weiter“, um eine weitere Seite aufzurufen, auf der Sie benutzerdefinierte Anweisungen direkt in den Textbereich eingeben können. Sie können Visual Studio QueryBuilder auch verwenden, um benutzerdefinierte Anweisungen visuell zu erstellen, indem Sie Tools verwenden, die Access QueryBuilder sehr ähnlich sind.
Wenn Sie den Assistenten nicht verwenden möchten, können Sie eine benutzerdefinierte SQL-Anweisung in das Eigenschaftenraster des AccessDataSource-Steuerelements eingeben oder zur Quellansicht wechseln und die Anweisung in die SelectCommand-Eigenschaft des AccessDataSource-Steuerelement-Tags eingeben.
Es gibt viele Bücher über SQL (derselbe Typ wie dieses ist Beginning SQL Programming , ISBN 1-861001-80-0), und dieses Buch bietet im Anhang eine kurze Einführung. Wenn Sie die SQL-Syntax erlernen möchten, können Sie zunächst die Befehle zum Zurückgeben eines Teils eines Datensatzes (TOP und DISTINCT), die Syntax zum Umbenennen eines Felds (AS) und die Technik zum Zurückgeben von Feldern aus zwei verbundenen Tabellen (JOIN) erlernen. . In den folgenden Übungen werden einige Variablen in SQL-Anweisungen untersucht.
Versuchen Sie Nr. 3: Ändern der Select-Anweisung in AccessDataSource. In dieser Übung zeigen Sie bestimmte Spalten und bestimmte Datensätze aus der Tabelle „Products“ von Northwind an. Außerdem wird eine Seite erstellt, auf der die aus der Abfrage erhaltenen Daten angezeigt werden. Bitte beachten Sie, dass in dieser Übung die Auswahlregeln bereits im Quellcode enthalten sind. Derzeit gibt es keine Benutzereingabe als Option.
(1) Erstellen Sie eine Datei mit dem Namen ch02_TIO_3_AlternateSelect-Commands.aspx in C:WebsitesBegAspNet2Dbch02.
(2) Fügen Sie ein AccessDataSource-Steuerelement mit Northwind als ID hinzu und legen Sie die MDB auf App_DataNorthwind.mdb fest. Richten Sie in einer Reihe von Dialogfeldern den Befehl „Auswählen“ ein, um alle Felder aus der Tabelle „Produkte“ abzurufen („Name“=Produkte). Werfen Sie einen Blick auf die Quellansicht und beachten Sie die von Ihnen erstellte Anweisung, wie unten dargestellt:
WÄHLEN Sie * AUS „Produkten“. |
<%@ page language="VB" %> <html> <head runat="server"> <title>ch02 TIO 3 Alternate Select Conimands</title> </Kopf> <Körper> <h3>ch02 TIO 3 Alternate Select Coinmands</h3> <form runat="server"> <asp:accessdatasource id="NorthwindAccDataSource" runat="server" selectcommand="SELECT * FROM Products" datafile=" ~/App_Data/Northwind.mdb" > </asp:accessdatasource> <asp:gridview id="GridViewl" runat="server" datasourceid="NorthwindAccDataSource"> </asp:gridview> </form> </Körper> </html> |
SELECT * FROM [Produkte] WHERE (CategroyID=3) |
<asp:accessdatasource id="NorthwindAccDataSource" runat="server" selectcommand="SELECT * FROM [Products] WHERE (CategoryID = 3) " Datafile="~App_Data/Northwind.mdb"> </asp:accessdatasource> |
SELECT * FROM Products WHERE ProductID = 12 SELECT * FROM Products WHERE ProductName = 'Northwoods Cranberry Sauce' SELECT * FROM Products WHERE ProductID <11 SELECT * FROM Products WHERE ProductID <11 ORDER BY ProductName Ascending WÄHLEN Sie * AUS Produkten, WO Lieferanten-ID = 6 ODER Lieferanten-ID = 8 SELECT * FROM Products WHERE SupplierID = 24 AND UnitPrice > 10 |
Variablen im Speicherort der MDB-Datei
MDB-Dateien werden an verschiedenen physischen Orten auf der Festplatte gespeichert: im selben Ordner wie die Webseite, in einem Unterordner unter der Webseite oder in anderen Ordnern auf dem Computer usw. In Visual Web Developer können diese Dateien häufig im Designer durchsucht werden und der korrekte Pfad zur MDB-Datei wurde eingegeben. Wenn Sie jedoch vorhaben, Ihren eigenen Code einzugeben, müssen Sie die in diesem Abschnitt beschriebene Syntax befolgen.
Die DataFile-Eigenschaft des AccessDataSource-Steuerelements enthält einen Seitenpfad, der vollständig qualifiziert sein kann (z. B. beginnend mit einem Laufwerksbuchstaben) oder relativ zum Speicherort der Seite angegeben werden kann, die die AccessDataSource enthält. Pfade können auch relativ zur Anwendung sein, d. h. unter Verwendung der URL-Syntax, um auf den Pfad zu verweisen. Diese Syntax ersetzt das Symbol (~) durch das Stammverzeichnis der Anwendung, zum Beispiel: ~App_Dataproduces.mdb. Die Verwendung anwendungsrelativer Pfade erleichtert das Verschieben von Seiten von einem Speicherort an einen anderen, ohne dass Verweise auf die Datenbank unterbrochen werden. Daher wird empfohlen, wann immer möglich anwendungsrelative Pfade zu verwenden.
Schauen wir uns zunächst die Syntax eines vollständig qualifizierten Pfads an, der den gesamten Pfad zu einer MDB-Datei enthält, beginnend mit dem Stammverzeichnis des Computerlaufwerks, auf dem sich die Datei befindet:
<asp:accessdatasource . datafile= "C:WebSitesWebApplicationApp_DataMyMdb.mdb"> |
<asp:accessdatasource |
<asp:accessdatasource |
<asp:accessdatasource |
<asp:accessdatasource |