webForumDet fria alternativet
Logga in / Bli medlem

Vad betyder...

Databaser & SQL

7 svar · 348 visningar · startad av Jörgen HP

Medlem sedan feb. 20012 412 inlägg
Frågan#1

Hej, ibland (1ggr på 50) får jag följande meddelande när jag försöker göra en Insert:

ADODB.Connection.1 error '80004005' 
SQLState: S1090
Native Error Code: 0
[TCX][MyODBC]SQLBindParameter not used for all parameters

vad betyder detta :q

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#2

Hur gör du insert? Har du någon parameter marker?

Medlem sedan feb. 20012 412 inlägg
#3

Hej, min kod ser ut så här:

SQLStmt ="INSERT INTO Inlagg "

SQLStmt = SQLStmt & "(Icon, Ip, Subject, Comment, Bevakning, Inlagg_AnvId, IntForumId, dteDate, LastUpdate, Orginal) "

SQLStmt = SQLStmt & "VALUES('" & Trim(Request.Form("Icon")) & "','" & Ip & "','" & Fixatecken(Trim(Request.Form("Subject"))) & "','" & Fixatecken(Trim(Request.Form("Comment"))) & "'," & Trim(Request.Form("Bevakning")) & ", " & AnvId & ", " & Trim(Request.Form("IntForumId")) & ", Now(), '"&strTid&"', 1) "

objDB.Execute SQLStmt,,128

parameter marker, vad är det?

red: funktionen fixa tecken ser ut så här:

Function FixaTecken(sfix)
sfix = Replace(Trim(sfix), "'", "''")
sfix = Replace(sfix, "|", "")
FixaTecken = sfix
End Function

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#4

En parameter marker är ett sätt att parametrisera sql-statements. I stället för ett värde så anger man ett frågetecken och det kallas för en parameter marker.

sql = "insert into ogrish(aleb,bleb) values(?,?)"

När man sedan gör execute så kan man använda ett command-objekt och med det skicka de aktuella värdena. På så sätt så kan man återutnyttja samma statement utan att behöva kompilera om det.

Rutinen SQLBindparameter används för ange ett värde för en parameter marker och då du inte har några sådana så borde den rutinen aldrig anropas.

Den sqlstate som du får betyder att det värde som man försöker skicka som parameter har en ogiltig längd.

I mina ögon så ser det ut som ett fel i ADO. (Om inte request.form("bevakning") kan innehålla ett frågetecken.)

Medlem sedan feb. 20012 412 inlägg
#5

I mina ögon så ser det ut som ett fel i ADO. (Om inte request.form("bevakning") kan innehålla ett frågetecken.)

Nej, den innehåller bara siffrorna 0,1,2 eller 3 förvalda i ett formulär.

Så du menar att det är webhotellets problems?

red: Subject och Comment kan innehålla frågetecken, kan det bero på det. Det verkar som felet inräffar när strängen innehåller ett "?"

mvh Jörgen :)

Medlem sedan feb. 20012 412 inlägg
#6

Har lokaliserat felet lite till, felmesset uppstår när jag använder " i Comment. Kan jag fixa till min funktion för att undvika detta?

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#7

Det verkar mycket konstigt. Om du har " i en sträng i ett sql-statement så skall inte det innebära något. Så helt klart är det fel någonstans (som inte beror på din kod!).

Du kan ju testa att byta " mot \"

Medlem sedan feb. 20012 412 inlägg
#8

Hej!

Du verkade ha rätt, sökte lite på chilliasp supportforum. Det verkade vara ett vanligt problem, som kunde lösas med:

sText = replace(sText,"'","\'")
sText = replace(sText, "?" , "?")

red: det sista frågetecknet ska vara & # 6 3 ;

mvh Jörgen :)

254 ms totalt · 4 externa anrop · v20260731065814-full.05830320
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)