Czy ktoś może pokazać mi najprostszy sposób wykonania sparametryzowanej kwerendy SQL przy użyciu klasycznej ASP w VBscript?Jak wykonać sparametryzowane zapytanie SQL w klasycznej ASP?
Najlepszy będzie przykład kompilacji.
Czy ktoś może pokazać mi najprostszy sposób wykonania sparametryzowanej kwerendy SQL przy użyciu klasycznej ASP w VBscript?Jak wykonać sparametryzowane zapytanie SQL w klasycznej ASP?
Najlepszy będzie przykład kompilacji.
Użyj obiektu adodb.command.
with createobject("adodb.command")
.activeConnection = application("connectionstring")
.commandText = "select * from sometable where id=?"
set rs = .execute(,array(123))
end with
Zalecam również użycie niestandardowego obiektu dostępu do bazy danych zamiast bezpośredniego korzystania z narzędzia adodb. Pozwala to na zbudowanie ładniejszego interfejsu API, polepszenie testowalności i dodanie haków do debugowania/rejestrowania/profilowania. Po drugie można dodawać transakcje o ograniczonym zakresie żądań z niejawnym wycofywaniem zmian przy użyciu zdarzenia class_terminiate. Oure db dostępu do obiektów oferuje następujące API zapytań
call db.execute("update some_table set column=? where id=?", array(value, id))
set rs = db.fetch_rs("select * from some_table where id=?", array(id))
count = db.fetch_scalar("select count(*) from some_table where column > ?", array(value))
Jak radzić sobie z błędami? – Geshan
bardzo elegancki i minimalny vbscript - Podoba mi się! –
To nie działa, jeśli kolumna ma wartość numeryczną, a wartość jest pusta. Czy istnieje sposób, aby to działało bez użycia ADODB.Command.CreateParameter? –
Zakładam, że odnosisz się do sparametryzowanego Zapytania SQL. Jeśli tak jest, to kod VBScript będzie wyglądać mniej więcej tak:
Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open "connectionstring"
SET cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = adoCon
cmd.CommandType= adCmdStoredProc
cmd.CommandText = "GetCustomerByFirstName"
cmd.Parameters.Append cmd.CreateParameter("@FirstName",adVarchar,adParamInput,50,"John")
Set Rec = cmd.Execute()
While NOT Rec.EOF
'code to iterate through the recordset
Rec.MoveNext
End While
UPDATE: musisz dołączyć plik ADOVBS.inc na stałe zostać rozpoznane.
Oto link: ADOVBS.inc
Czy muszę dołączyć jakiś plik, aby ASP rozpoznało stałe adVarchar i adParamInput? –
Tak. Oto link do tego pliku http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –
Ta sugestia była bardzo pomocna w scenariuszu procedur przechowywanych. – Thanigainathan
Inną opcją jest, aby w tym adovbs.inc
dodać odwołanie do następującej biblioteki typów pobliżu góry ASP. Podobno to ma lepszą wydajność niż include:
<!--METADATA TYPE="TypeLib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" VERSION="2.5" -->
Here znajduje się lista niektórych bibliotek typów.
+1 doskonała sugestia! – Abel
Czy odwołujesz się do sparametryzowanego zapytania SQL? –
tak. zamierzam zaktualizować pytanie w celu wyjaśnienia. dzięki! –