webForumDet fria alternativet

Problem med att lägga till data i databas

ASP

3 svar · 235 visningar · startad av Runken

Medlem sedan apr. 200336 inlägg
Frågan#1

Hej!

Vi får följande felmeddelande när vi kör vår asp-sida:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Ogiltig längd på sträng eller buffert

eller detta:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
En OLE DB-åtgärd i flera steg genererade fel. Kontrollera alla OLE DB-statusvärden som finns tillgängliga. Inget arbete utfördes.

Vi har försäkrat oss om att posten i databasen är tillräckligt stor så det är tyvärr inte det som är lösningen.
Det fungerade att lägga in data i databasen första gången vi provade men sen har felmeddelanden visats.
Vad kan detta bero på??

ASP-koden vi använt är följande:

<%
Dim conn, anamn

Set conn = createobject("ADODB.Connection")

conn.open = "DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& "DATABASE=CARO;"_
& "UID=root;PWD=; OPTION=;"
Set RecSet = Server.CreateObject("ADODB.Recordset")
fraga = "SELECT * FROM customer"
RecSet.Open fraga, Conn, adOpenStatic, adLockOptimistic

RecSet.addnew
RecSet("anamn") = request.form("testtext")
RecSet.update

RecSet.close

conn.close
%>

Mycket tacksamma för svar.

Glad påsk!!

Medlem sedan jan. 20032 285 inlägg
#2

I MySQL tror jag att man måste använda SQL:

<% 
Dim conn, anamn 

Set conn = createobject("ADODB.Connection") 
conn.open = "DRIVER={MySQL ODBC 3.51 Driver};"_ 
& "SERVER=localhost;"_ 
& "DATABASE=CARO;"_ 
& "UID=root;PWD=; OPTION=;" 

strSQL = "INSERT INTO customer (anamn) VALUES ('" & Replace(Request.Form("testtext"),"'","''") & "')"
conn.Execute(strSQL)
conn.Close
Set conn = Nothing
%>
Medlem sedan dec. 200012 464 inlägg
#3

Jag vet inte varför det blir fel men det finns ingen anledning att använda addnew. Insert är bättre och så skyddar man sig mot SQL injection

<%
Dim conn, anamn,q

Set conn = createobject("ADODB.Connection")

conn.open = "DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& "DATABASE=CARO;"_
& "UID=root;PWD=; OPTION=;"

anamn = "'" & replace(request.form("testtext"),"'","''") & "'"
q  = "insert into customer(anamn) values(" & anamn & ")"
conn.execute q,,128

conn.close
%>

Går det bra att göra insert via något verktyg?

Medlem sedan juli 200237 inlägg
#4

Tillåter alla andra fält i din tabell NULL? annars blir det nog fel...

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)