inte den bästa lösningen men "splitar" strängen vid ? och loopar igenom den och lägg samma värde som din "sql-array" är... problemet är .. eller "problem" behöver det inte vara.. men vad händer om din SQL måste ha en sträng och ett Interger... (visst detta går också att lösa med TypeName kanske. Om du inte vill splitar gör en split med hjälp av regExp och kör det på det sättet.
inte den bästa lösningen men "splitar" strängen vid ? och loopar igenom den och lägg samma värde som din "sql-array" är... problemet är .. eller "problem" behöver det inte vara.. men vad händer om din SQL måste ha en sträng och ett Interger... (visst detta går också att lösa med TypeName kanske. Om du inte vill splitar gör en split med hjälp av regExp och kör det på det sättet.
Körde på den första varianten..
Resultat
Function BuildSql(stringSQL,Params)
Dim pos
pos = split(trim(stringSQL),"?")
if IsArray(Params) Then
For i = 0 To Ubound(pos)
Select Case(TypeName(Params(i)))
Case "String"
pos(i) = pos(i) & "'" & Params(i) & "'"
Case "Integer"
pos(i) = pos(i) & Params(i)
Case "Double"
pos(i) = pos(i) & "'" & Params(i) & "'"
Case "Date"
pos(i) = pos(i) & "'" & Params(i) & "'"
End Select
BuildSql = BuildSql & pos(i)
Next
Else
For i = 0 To Ubound(pos) - 1
Select Case(TypeName(Params))
Case "String"
pos(i) = pos(i) & "'" & Params & "'"
Case "Integer"
pos(i) = pos(i) & Params
Case "Double"
pos(i) = pos(i) & "'" & Params & "'"
Case "Date"
pos(i) = pos(i) & "'" & Params & "'"
End Select
BuildSql = BuildSql & pos(i)
Next
End if
End Function
Anropar:
strSQL1 = "INSERT INTO tabell(s,s,s,s) values(?,?,?)"
strSQL2 = "Select * from tabell where id=?"
strSQL3 = "Select * from tabell inner join tabell2 on tabell.uid=tabell2.uid where id=? and email=?"
' Flera parameterar.
Dim parameters(3)
parameters(0) = 100
parameters(1) = "Förnamn"
parameters(2) = "Efternamn"
Response.Write BuildSql(strSQL1, parameters) & "<br />"
' Enstaka parameter
Response.Write BuildSql(strSQL2, 10000) & "<br />"
' Flera parameterar
Dim parameters1(2)
parameters1(0) = 1000
parameters1(1) = "email@email.com"
Response.Write BuildSql(strSQL3, parameters1)
Funkade som tänkt :)
Men optimal.. mja..
256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e