Wir sind bereits mit der Durchführung von Datenbankoperationen in ASP durch den Aufruf gespeicherter SQL Server-Prozeduren vertraut, aber wissen Sie, dass wir gespeicherte Prozeduren auch im Datenbankzugriff auf Desktop-Ebene erstellen und verwenden können?
Access + ASP ist eine hervorragende Kombination für die Entwicklung leichter Webanwendungen: einfach, schnell und kompatibel, aber die Leistung ist normalerweise nicht hoch. Darüber hinaus gibt es einige Unannehmlichkeiten bei der Verwendung von ADODB.Connection- und Recordset-Objekten zum Ausführen von SQL-Anweisungen, da die Parameterwerte von SQL-Anweisungen häufig in Zeichenfolgen gespleißt werden, sodass Probleme wie einfache Anführungszeichen auftreten. Ein Vorteil der Verwendung gespeicherter Prozeduren besteht darin, dass sie die zusätzliche Bereitstellung von SQL-Anweisungsparameterwerten unterstützen.
Tatsächlich sind die sogenannten gespeicherten Prozeduren in Access (2000 und höher) nicht mit den gespeicherten Prozeduren in SQL Server vergleichbar. Es kann nur als Stored Procedure Lite betrachtet werden, unterstützt nicht mehrere SQL-Anweisungen, unterstützt keine logischen Anweisungen (haha, es ist schließlich kein T-SQL) usw. Ich weiß noch nicht, ob es vorkompiliert ist. Doch ebenso wie die sogenannten von VBScript implementierten Klassen nur gekapselt sind und die Verschönerung der Codestruktur und die Wiederverwendbarkeit von Programmen erheblich fördern, sollten die leichtgewichtigen gespeicherten Prozeduren von Access auch bei der Standardisierung und Minimierung der Fehlerwahrscheinlichkeit von Datenbankoperationen hilfreich sein, und die Leistung kann verbessert werden.
Im Folgenden erkläre ich Schritt für Schritt, wie man eine gespeicherte Prozedur in Access erstellt und diese dann in einem ASP-Programm verwendet.
(1) Erstellen Sie eine gespeicherte Prozedur in Access
Ich weiß nicht, wie gut jeder Access verwendet. Für mich ist es jedoch nur ein Tool zum Erstellen neuer MDB-Dateien und dann zum Erstellen von Tabellen, Indizes, Einschränkungen usw. in der Access-Schnittstelle. vorbei~
Abfragen in Access spielen die Rolle gespeicherter Prozeduren. Die unten erwähnten gespeicherten Access-Prozeduren oder -Abfragen beziehen sich alle auf dieses Ding.
Für die Abfrageerstellung stellt Access ein einfaches Tool zur Verfügung, ähnlich dem Assistenten beim Erstellen eines DataAdapters in VS.NET. Aber ich schreibe gerne SQL-Code direkt
Klicken Sie dann links auf der Hauptschnittstelle von Access auf die Schaltfläche „Abfrage“ und doppelklicken Sie dann rechts auf „Abfrage in Entwurfsansicht erstellen“, um die Entwurfsansicht für Abfragen zu öffnen.
Zu diesem Zeitpunkt wird der visuelle Abfrage-Builder angezeigt. Zuerst fügen wir die Tabellen hinzu, die die SQL-Anweisung umfassen muss.
Klicken Sie nach dem Hinzufügen der Tabelle mit der rechten Maustaste auf die Entwurfsansicht und wählen Sie „SQL-Ansicht“, um zum SQL-Code-Bearbeitungsfenster zu wechseln.
Okay, lassen Sie uns über die Eigenschaften der gespeicherten Prozeduren von Access sprechen.
Ich habe derzeit den Eindruck, dass die Access-Abfrage ein Wrapper für die SQL-Anweisung ist, möglicherweise mit einigen Optimierungen wie Vorkompilierung. Wir können nicht mehrere Operationen, Transaktionen, logische Beurteilungen, Schleifen usw. verwenden, wie zum Beispiel das Schreiben gespeicherter SQL Server-Prozeduren ...
Der Hauptzweck der Verwendung gespeicherter Access-Prozeduren besteht jedoch darin, Abfragen zu verwenden, die durch zusätzliche Parameter bereitgestellt werden. Durch die Verwendung gespeicherter Prozeduren müssen wir uns nicht mehr mit den verschiedenen Problemen auseinandersetzen, die beim Zusammenfügen von Parameterwerten in SQL-Anweisungszeichenfolgen auftreten, wie zum Beispiel:
Code:
Schwaches SQL
sql = SELECT * FROM Users WHERE UserName = ' & userName & '
Wenn im obigen Code die Zeichenfolgenvariable userName einfache Anführungszeichen enthält, wird ein Fehler gemeldet. Wir müssen manuell konvertieren:
Code:
Schwaches SQL
sql = SELECT * FROM Users WHERE UserName = ' & Replacement(userName, ', '') & ' ' wird in zwei aufeinanderfolgende einfache Anführungszeichen umgewandelt
Unter Verwendung einer Abfrage mit Parametern kann unsere SQL-Anweisung wie folgt geschrieben werden:
Code:
Schwaches SQL
sql = SELECT * FROM Users WHERE UserName = @userName
Übergeben Sie dann einfach den Wert des Parameters @userName mithilfe der Parameter-Eigenschaft des Command-Objekts, was sehr praktisch und intuitiv ist.
Code:
Mit cmd
'Parameterobjekt erstellen
.Parameters.Append .CreateParameter(@userName)
'Geben Sie Werte für jeden Parameter an
.Parameters(@userName) = userName
Ende mit
Hier erklären wir auch die Verwendung von Parametern in gespeicherten Access-Prozeduren. Im Gegensatz zu den gespeicherten Prozeduren von SQL Server, die @-Variablen zum Angeben von Parametern verwenden und dann Parameterobjekte mit demselben Namen übergeben, werden Parameter in Access nach der Reihenfolge und nicht nach dem Namen identifiziert. Es ist nicht erforderlich, einen Namen für die übergebenen Parameter anzugeben. Sie können sie auch zufällig benennen. Solange die Parameterwerte übergeben werden, sollten sie in der Reihenfolge angegeben werden in dem die Parameter in der SQL-Anweisung vorkommen. Normalerweise verwenden wir die Execute-Methode des Command-Objekts und übergeben direkt das Parameterwert-Array, um ~ auszuführen
Code:
cmd.Execute, Array(Benutzername)
Als weiteres Beispiel ist eine Ihrer gespeicherten Access-Prozeduren wie folgt geschrieben:
Code:
Wählen Sie * aus „Benutzer“ aus, wobei UserName = p_UserName und BookTitle = p_bookTitle ist
Sie können es einfach so machen, indem Sie ein Array von Parameterwerten übergeben, aber in der richtigen Reihenfolge:
Code:
cmd.Execute, Array(Benutzername, Buchtitel)
Okay, schauen wir uns die beiden in unserem Beispiel verwendeten Abfragen an. Eine davon dient dem Schreiben von Daten. Nachdem Sie die SQL-Anweisung geschrieben haben, speichern Sie sie und benennen Sie sie.
Ein weiterer gespeicherter Prozedurcode, der Daten liest.
(2) Verwendung gespeicherter Prozeduren
Dann können wir diese gespeicherten Prozeduren im ASP-Programm aufrufen.
Hier können Sie sehen, warum ich gesagt habe, dass die Abfrage in Access die gespeicherte Prozedur ist – die CommandType-Eigenschaft unseres Command-Objekts ist auf 4 gesetzt, was Stored Proc ist!
Also...
Der folgende Code ist sehr einfach:
Code:
<%
Option explizit
Dim s
Randomisieren
s = Rnd * 100
Verbindung dimmen, cmd
Setze conn = Server.CreateObject(ADODB.Connection)
Setze cmd = Server.CreateObject(ADODB.Command)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Data Source= & Server.MapPath(sp.mdb)
Mit cmd
.ActiveConnection = Verbindung
.CommandType = &H0004 'Gespeicherte Prozedur
.CommandText = AddNewData
Ende mit
cmd.Execute, Array(CStr(Now()), CSng(s))
Mit cmd
.ActiveConnection = Verbindung
.CommandType = &H0004 'Gespeicherte Prozedur
.CommandText = GetData
Ende mit
Dimmen Sie resultRS, resultArray
Setze resultRS = cmd.Execute(, Null)
Wenn nicht, resultRS.EOF, dann
resultArray = resultRS.GetRows()
Ende wenn
Setze resultRS = Nichts
Setze cmd = Nichts
conn.Schließen
Setze conn = Nothing
Response.Write <ul>
Dim ich
Für i = 0 Zu UBound(resultArray, 2)
Response.Write <li> & resultArray(0, i)
Response.Write & resultArray(1, i)
Response.Write & resultArray(2, i)
Response.Write </li>
Nächste
Response.Write </ul>
%>