Eine generic VBscript-Funktion eine Verbindung zu einer Datenbank und ausführen von SQL-Abfrage
die Funktion sollte nur Verbindungszeichenfolge und SQL-Abfrage als Eingabe und es sollte eine Verbindung zu einer Datenbank(SQL, ORACLE, SYBASE, MS ACCESS) und ausführen einer Abfrage, die ich habe übergeben als Parameter an die Funktion.
Ich geschrieben habe, die unten Funktion für diese Aufgabe Können Sie bitte prüfen Sie dies einmal und sagen Sie mir, ist das richtig oder pls mir sagen, ob ich falsch bin überall.
#
Public Function ConnectDB (strCon, strQuery)
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open strCon
objRecordSet.Open strQuery,objConnection
objRecordSet.MoveFirst
Do Until objRecordset.EOF
Msgbox "Number of records: " & objRecordset.RecordCount
Msgbox objRecordset(0)
Msgbox objRecordset(1)
objRecordset.MoveNext
Loop
objRecordSet.Close
objConnection.Close
Set objConnection = Nothing
Set objRecordSet = Nothing
End Function
#
Call ConnectDB ("Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb","SELECT * FROM EMP ORDER BY EMPName")
UPDATE:
Vielen Dank für die Antworten.
Eigentlich bin ich gebeten worden, zu schreiben, die eine Funktion ausführt, die Aufgabe, die Verbindung zu einer Datenbank und ausführen einer Abfrage(erteilt vom Benutzer) in die verbundene Datenbank.
Habe ich begonnen zu lernen, VBScript und möchten fundierte Kenntnisse von Funktionen schreiben. Ekkehard horner können Sie mir bitte sagen, wo kann ich Lesen, um wissen über alle Routinen(Funktionen und sub-Prozedur). Derzeit habe ich nur die grundlegende Idee, auf Routinen und die von mir genannten MSDN, wo haben Sie nur die grundlegenden Informationen. Bitte helfen Sie mir, wo zu studieren, mehr über Routinen. Ist es so schwierig, Programme zu schreiben, ohne zu wissen, über Sie richtig.
Hallo Sanpaco, unten ist die Klasse die ich geschrieben habe. Bitte überprüfen Sie es einmal und lassen Sie mich wissen, die Korrekturen.
Ich bin sehr neu in VBScript.Schlagen Sie mich, die Möglichkeiten zur Verbesserung meiner Programmierkenntnisse.
Class DBCommunicator
Public Function DBConnect(StrCon)
Option Eplicit
Dim oConn
set oConn = CreateObject("ADODB.Connection")
oConn.Open Strcon
Function DBConnect = True
End Function
Public Function QueryDB(StrQuery)
Option Eplicit
Dim oRst, oField
set oRst = CreateObject("ADODB.recordset")
oRst.Open "StrQuery", oConn
Do Until oRst.EOF
For each oField in oRst.Fields
Print oField.Name & " = " & oField.Value
Next
oRst.MoveNext
loop
Public Function DBdisConnect
oRst.close
oConn.close
End Function
End Class
########################################
Option Explicit
Dim strResult
strResult=DBCommunicator.DBConnect("<<Connection String of any database User want to connect>>")
If strResult<>True Then
wscript.echo "DB Connection Failed"
End If
DBCommunicator.QueryDB("Select * from EMP")
DBCommunicator.DBdisConnect
- warum versuchst du es nicht und lassen Sie uns wissen, wenn etwas schief geht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine routine (Sub oder Function) sollte genau das tun, eine wiederholbare/wiederverwendbare Aufgabe. Ihre
Funktion erstellt, öffnet und schließt eine Verbindung, erzeugt, verwendet und schließt ein
recordset, und nervt den user mit der message-Boxen. Wenn Sie wollen, etwas zu tun
sinnvolle morgen, Sie haben zu schreiben (per copy & paste & ändern) eine andere
routine.
Einer Funktion sollte einen Wert zurückgeben; Ihnen nicht der Fall. Eine Funktion sollte keine
Nebenwirkungen, deinen tut-by-doing-IO. Die Arbeit/Tätigkeit der routine sollte
bestimmt durch Ihre Parameter allein; Ihrig, hängt davon ab, die Standard-Einstellungen/Werte
für die zahlreichen Parameter an die .Öffnen Sie Methoden, die Sie nicht stellen.
Code darf nicht enthalten Fett; .MoveFirst vor .EOF Schleife, anzeigen
.RecordCount in der Schleife festlegen und object-Variablen auf Nothing sofort
bevor die routine ' s end ist nur, dass. VBScript-code sollte mit "Option
Explizite"; deins offensichtlich nicht.
Während die Unabhängigkeit von einem bestimmten DBMS ist attraktiv, wenn Sie lernen
oder Untersuchung, eine professionelle Lösung für ein reales problem
auf der Grundlage der Entscheidung für die 'beste' DBMS für die Aufgabe; dies führt
zu DBMS-spezifischen code verwenden DBMS-spezifischen Funktionen. Dann ist der Schalter aus
einem DBMS zu einem anderen durch ändern Sie den ConnectionString, ist illusorisch.
Datenbank arbeiten, ist entweder der "verbinden-eine Sache zu tun-disconnect" - Stil
.Net ADO oder des "connect on start-tun, viele verschiedene Dinge zu trennen, die auf
Kündigung" - Stil der 'klassischen' ADO. Wenn Sie angeben, welche Art von Aufgaben
Sie haben in mind, bin ich möglicherweise bereit zum Anhängen an die Antwort.
Könnten Sie erwägen, eine DatabaseCommunicator Klasse, hat separaten Datenbank-Funktionen (Verbinden, ExecuteQuery "Verbindung Trennen"), anstatt zu versuchen, alles zu tun, mit einer Methode. Auch, wenn Sie wollen, verwenden verschiedene Arten von Providern, die dynamisch ist, dann würden Sie brauchen, um die Anfrage zu bestätigen-format, um sicherzustellen, dass es verwendet die korrekte syntax für welchen Anbieter Sie verwenden.
Ich wäre sehr daran interessiert zu sehen, wie Sie diese Aufgabe ausführen, sollten Sie nehmen es auf.
Ich Feste Ihren code noch nicht sicher, ich Stimme mit, aber es scheint zu funktionieren. Ich glaube nicht, dass VB-Script-Klassen erkennt.