Frage

Ich habe ein paar Fragen zu VBScript und ASP Classic:

  1. Was ist die bevorzugte Methode für den Zugriff auf eine MS SQL Server-Datenbank in VBScript/ASP?

  2. Was sind Best Practices in Bezug auf die Trennung von Modell, Ansicht und Controller?

  3. Gibt es sonst noch Dinge, die ich über VBScript oder ASP wissen sollte?

Falls Sie es noch nicht bemerkt haben: Ich bin neu in der VBScript-Codierung.Mir ist klar, dass es sich bei den Nummern 2 und 3 um riesige „Schwarze-Loch“-Fragen handelt, die zu allgemein gehalten sind. Ich glaube also nicht, dass ich von hier aus erwarte, alles über diese beiden Fragen zu erfahren.

War es hilfreich?

Lösung

ADO ist eine hervorragende Möglichkeit, auf eine Datenbank in VBScript/Classic ASP zuzugreifen.

Dim db: Set db = Server.CreateObject("ADODB.Connection")
db.Open "yourconnectionstring -> see connectionstrings.com"
Dim rs: Set rs = db.Execute("SELECT firstName from Employees")
While Not rs.EOF
    Response.Write rs("firstName")
    rs.MoveNext
Wend
rs.Close

Weitere Infos hier: http://www.technowledgebase.com/2007/06/12/vbscript-how-to-create-an-ado-connection-and-run-a-query/

Eine Einschränkung besteht darin, dass Sie bei der Rückgabe eines MEMO-Felds in einem Recordset darauf achten müssen, jeweils nur EIN MEMO-Feld auszuwählen und sicherzustellen, dass es sich um die LETZTE Spalte in Ihrer Abfrage handelt.Andernfalls werden Sie auf Probleme stoßen.(Referenz: http://lists.evolt.org/archive/Week-of-Mon-20040329/157305.html )

Andere Tipps

Ich musste meinen PC verlassen, als ich die erste Antwort sah, und bin immer noch beunruhigt darüber, dass sie von so vielen Menschen angenommen wurde.Es ist ein erschreckendes Beispiel für die allerschlimmste Art von ASP-Code, der dafür sorgt, dass Ihre Site SQL-injizierbar ist und, wenn Sie diesen Code weiterhin auf der gesamten Site verwenden, innerhalb eines Zentimeters ihrer Lebensdauer hackbar ist.

Dies ist NICHT die Art von Code, die Sie jemandem geben sollten, der neu in der ASP-Codierung ist, da er denken wird, dass dies die professionelle Art des Codierens in der Sprache ist!

  1. Geben Sie NIEMALS eine Verbindungszeichenfolge in Ihrem Code preis, da diese den Benutzernamen und das Passwort für Ihre Datenbank enthält.Verwenden Sie stattdessen eine UDL-Datei oder zumindest eine Konstante, die an anderer Stelle deklariert und auf der gesamten Site verwendet werden kann.

  2. Es gibt keine gute Entschuldigung mehr für die Verwendung von Inline-SQL für irgendeinen Vorgang in einer Webumgebung.Verwenden Sie eine gespeicherte Prozedur – die Sicherheitsvorteile können nicht genug betont werden.Wenn Sie das wirklich nicht können, dann betrachten Sie Inline-Parameter als zweitbeste Option ...Inline-SQL macht Ihre Website anfällig für SQL-Injection, Malware-Injection und dergleichen.

  3. Eine verspätete Deklaration von Variablen kann zu einer schlampigen Codierung führen.Verwenden Sie „Option explizit“ und deklarieren Sie Variablen oben in der Funktion.Dies ist eher eine bewährte Methode als ein echter WTF, aber es ist am besten, so zu beginnen, wie Sie es beabsichtigen.

  4. Für die Datenbank gibt es keine Hinweise darauf, um welche Art von Verbindung es sich handelt – dient sie nur dem Lesen oder aktualisiert der Benutzer Datensätze?Die Verbindung kann optimiert werden und die Datenbank kann das Sperren sehr effizient verarbeiten, wenn ihr effektiv mitgeteilt wird, was sie erwartet.

  5. Die Datenbankverbindung wird nach der Verwendung nicht geschlossen und das Recordset-Objekt wird nicht vollständig zerstört.

ASP ist immer noch eine starke Sprache, obwohl viele Leute vorschlagen, auf .NET umzusteigen – mit guten Codierungspraktiken kann eine ASP-Site geschrieben werden, die einfach zu warten, skalierbar und schnell ist, aber Sie MÜSSEN sicherstellen, dass Sie alle verfügbaren Methoden verwenden, um sie zu erstellen Um Ihren Code effizient zu gestalten, MÜSSEN Sie gute Codierungspraktiken und ein wenig Voraussicht beibehalten.Ein guter Editor hilft auch, ich bevorzuge PrimalScript, das für einen ASP-Programmierer meiner Meinung nach hilfreicher ist als jedes der neuesten MS-Produkte, die sehr .NET-zentriert zu sein scheinen.

Und woher kommt ein „MEMO“-Feld?Ist das Access-Nomenklatur oder vielleicht MySQL?Ich frage, da solche Felder in MS-SQL seit einem Jahrzehnt als TEXT- oder NTEXT-Felder bezeichnet werden.

Erinnere dich an Programm in die Sprache und nicht das Programm darin.Nur weil Sie einen begrenzten Werkzeugsatz verwenden, heißt das nicht, dass Sie wie im Jahr 1999 programmieren müssen.

Was den Unterricht betrifft, stimme ich JasonS zu.Es ist wahr, dass man Dinge wie eine Vererbung nicht machen kann, aber man kann es leicht vortäuschen

Class Dog
    Private Parent

    Private Sub Class_Initialize()
        Set Parent = New Animal
    End Sub

    Public Function Walk()
        Walk = Parent.Walk
    End Function

    Public Function Bark()
        Response.Write("Woof! Woof!")
    End Function
End Class

In meinen Projekten wird eine ASP-Seite Folgendes haben:INC-APP-CommonIncludes.asp – Dies umfasst Dinge wie meine allgemeinen Bibliotheken (Datenbankzugriff, Dateifunktionen usw.), richtet die Sicherheit ein und umfasst alle Konfigurationsdateien (wie Verbindungszeichenfolgen, Verzeichnisspeicherorte usw.) und allgemeine Klassen (Benutzer, Berechtigungen). usw.) und ist auf jeder Seite enthalten.

Modules/ModuleName/page.vb.asp – Eine Art Code hinter der Seite.Enthält seitenspezifische BO-, BLL- und DAL-Klassen und richtet die für die Seite erforderlichen Daten ein/empfängt übermittelte Formulardaten usw

Modules/ModuleName/Display/INC-DIS-Page.asp – Zeigt die in page.vb.asp eingerichteten Daten an.

Ich greife einige Ideen auf und füge einige meiner eigenen hinzu:

1) Der beste Weg, auf die Datenbank zuzugreifen, besteht darin, diese in eine COM-Komponente zu abstrahieren, auf die Sie über VBScript zugreifen.

2) Wenn Sie es wirklich wollten, könnten Sie den Controller in VBScript schreiben und dann auf der Seite darauf zugreifen.Es würde einem Page-Controller-Muster ähneln und nicht einem Front-Controller, den Sie in ASP.NET MVC oder MonoRail sehen würden

3) Warum tust du dir das an?Die meisten Werkzeuge, die für diese Art von Arbeit erforderlich sind, sind nicht einmal mehr verfügbar.

AX – Asp Xtreme Evolution ist ein MVC-Framework für ASP Classic

Es gibt einige Versuche, Test-Frameworks für ASP zu erstellen:aspUnit ist gut, wird aber nicht mehr gepflegt.

Ich habe vor ein paar Monaten ein Beispiel gesehen, wie man ein eigenes Exemplar herstellt.Im Beispiel wurde nUnit verwendet, um Funktionen für die Website zum automatischen Testen aufzurufen.Ich glaube, ich habe es geschafft Hier (Meine Leitung ist unterbrochen, daher kann ich nicht nachsehen)

Was Nummer 2 angeht, denke ich, dass Sie ein paar Möglichkeiten haben ...

1) Sie können in VB6 oder ähnlichem entwickelte COM-Komponenten verwenden, um einen Teil Ihrer Geschäftslogik von Ihrer Benutzeroberfläche zu trennen.

2) Sie können Klassen in VBScript erstellen.Es gibt kein Vererbungskonzept und andere erweiterte Funktionen fehlen in der Implementierung. Sie können jedoch Logik in Klassen kapseln, um die Komplexität Ihrer App zu verringern.Schau dir das an: http://www.4guysfromrolla.com/webtech/092399-1.shtml

Ich stimme @Cirieno zu, dass die Verwendung der ausgewählten Antwort im Produktionscode aus allen von ihm genannten Gründen nicht sinnvoll wäre.Wenn Sie jedoch nur ein wenig Erfahrung haben, ist diese Antwort ein guter Ausgangspunkt für die Grundlagen.

In meiner ASP-Erfahrung habe ich es vorgezogen, meine Datenbankzugriffsschicht mit VB zu schreiben, sie in eine DLL zu kompilieren und über VBScript auf die DLL zu verweisen.Das Debuggen direkt über ASP ist schwierig, aber es war eine gute Möglichkeit, den gesamten Datenzugriffscode außerhalb des ASP-Codes zu kapseln.

Weg zurück in den Tag, als VBScript/ASP noch ok waren Ich habe in einem Versorgungsunternehmen mit einem sehr gemischten DB-Umfeld gearbeitet, ich habe auf diese Website geschworen: http://www.connectionstrings.com/

@michealpryor hat es richtig gemacht

Ich stecke beim Aufbau von ASP fest und spüre Ihren Schmerz.

1) Der beste Weg, SQL Server abzufragen, sind parametrisierte Abfragen.Dies trägt dazu bei, SQL-Injection-Angriffe zu verhindern.

Tutorial (nicht mein Blog):
http://www.nomadpete.com/2007/03/23/classic-asp-which-is-still-alive-and-parametised-queries/

2) Ich habe nichts über MVC gesehen, das speziell auf ASP ausgerichtet ist, aber ich bin auf jeden Fall interessiert, weil es etwas ist, mit dem ich mich nur schwer befassen kann.Im Allgemeinen versuche ich, Dinge, die einer Ansicht ähneln, und Dinge, die einem Controller ähneln, zumindest in separaten Funktionen zu enthalten.Ich nehme an, Sie könnten möglicherweise Code in separate Dateien schreiben und sie dann mithilfe serverseitiger Includes wieder zusammenfügen.

3) Sie kommen wahrscheinlich aus einer Sprache, die über mehr integrierte Funktionen verfügt.Auf den ersten Blick scheinen einige Dinge zu fehlen, aber oft geht es einfach darum, viel mehr Codezeilen zu schreiben, als Sie es gewohnt sind.

Auch für den Datenbankzugriff habe ich eine Reihe von Funktionen – GetSingleRecord, GetRecordset und UpdateDatabase, die eine ähnliche Funktion haben wie Michael oben erwähnt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top