Hej alle.
Inspireret af en del spørgsmål om SQL osv, samt den funktion som Leif Neland
henviste i en tidligere post, har nu lavet 1. udkast til en generel
parameterized query funktion.
Den kan bruges til både select og update/insert m.m.
Hvis det er en select, returneres resultsættet, og hvis det er andet
returneres rowsaffected.
End umiddelbar test med select og update ser ud til at virke fint.
Funktionen kommer her, hvis der er nogen der har lyst til at teste:
...... fil: sql.inc.asp
<%
Function query(connection, SQL, parameters)
Dim cmd, Counter , isSelect
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = connection
cmd.CommandType = adCmdText
cmd.CommandText = SQL
IF lcase(left(ltrim(SQL),6)) = "select" then
isSelect = true
else
isSelect = false
end if
For Counter = 0 To UBound(parameters)
cmd(Counter).value = parameters(Counter)
Next
if isSelect then
Set query = cmd.Execute
else
cmd.Execute , Counter
query = Counter
end if
End Function
%>
...... slut fil.
Den benytter en anden includefil adovbs.inc, som definerer bla adCmdText.
Ellers skal man bare bruge de numeriske værdier.
Eksempel på SELECT:
.....
Set oRs = query(oConn,"SELECT * FROM Databases WHERE
databasename=?",Array(Databasename))
if (Not oRs.eof) then
.....
Eksempel på UPDATE (SQL er bygget med UPDATE osv):
Response.Write "<br/>Rows affected " +
cStr(query(oConn,SQL,Array(NotesId)))
oConn er her en åben database connection.
Når den er testet lidt mere finder jeg et sted at lægge den til download.
Have fun.
--
Med venlig hilsen/Best regards
Stig Johansen
|