Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM user where uname='"&user&"'"
Set RS = conn.execute(SQL)
if rs.bof and rs.eof then
RS.AddNew
RS("uname") = user
RS("password") = password1
RS("fname") = fname
RS("sname") = sname
RS("city") = bor
RS.Update
RS.Close
Conn.Close
else
response.redirect("registrera2.asp?error=3")
end if
%>
jag får felmedelande
Feltyp:
ADODB.Recordset (0x800A0CB3)
Aktuellt Recordset kan inte uppdateras. Det kan bero på en begränsning av providern eller den valda låstypen.
det finns ett bättre sätt med INSERT INTO, men jag kommer förbbannat inte ihåg hur strängen skall se ut.. nån som kan påminna mej lite
nått i denna stil
SQL = "Insert into user where username='"&username&"'"
När du vill uppdatera ett recordset med .Update() måste du först öppna det med LockType 2, 3 eller 4, eftersom default är adLockReadOnly (1). Exempelvis för dig så blir det
RS.Open strSQL, conn, , 2
Då kan du använda dig av .Update()
Om du istället väljer att köra med en INSERT (vilket jag rekommenderar i det här läget) kan det se ut såhär
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Operationen måste använda en fråga som kan uppdateras.
<!--#include file="dbconn.asp" -->
<%
Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM user where uname='"&username&"'"
Set RS = conn.execute(SQL)
if rs.bof and rs.eof then
SQL = "Insert Into user(uname, password, fname, sname, city) Values ('"&username& "', '"&password&"','"&fname&"','"&sname& "','"& bor &"')"
Set RS = conn.execute(SQL)
else
response.redirect("registrera2.asp?error=3")
end if
inte bara att du har valt fel sätt(enligt mig) att skriva in te databasen testa mitt så funkar d säkert!=) men sen så har du glömt att adda adovbs.inc tror ja
Tilläggas bör, att man behöver aldrig inkludera adovbs.inc. Antingen använder man konstanternas värden direkt i koden, eller så definierar man de få konstanter man verkligen använder direkt i koden.
Det finns ingen anledning att inkludera en mastodontfil helt i onödan.
Nopp!
Att du skriver 2st ' gör bara så att inte sql-frågan ska krascha (sql-injections), dock lagras det bara 1 ' i databasen. Om du istället kör på din varitan (och plockar bort ') då blir en del ord lite konstiga ja.
atra> ett apostroftecken betyder att det du ska lägga in i dbn slutar där... då kommer IIS försöka tolka resten av strängen som en sql-anrop vilket naturligtvis ger ett fel...
kör funktionen nedan innan du lagrar i db...
Function FixForDb(ByVal strData)
IF NOT Len(Trim(strData))<1 Then
strData = Replace(strData,"'","''")
strData = Replace(strData & " ","|","")
END IF
FixForDb = strData
End Function