Avatar billede medow Nybegynder
26. maj 2006 - 10:28 Der er 18 kommentarer og
2 løsninger

Insert into statement med error

Jeg er i gang med at lave lidt databaseprogrammering, og i den forbindelse kunne jeg godt tænke mig at skrive til databasen, dette skulle være i form af to "forme" henholdsvis "brugernavn" og "password". Tanken er at en bruger kan indtaste værdier i hver form, og at dette så skal gemmes i databasen.

Jeg har en side med formene:
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Busad/opretform.asp</title>
</head>

<body>

<p class="MsoNormal"><i><b><font size="5">Welcome</font></b></i></p>
<p class="MsoNormal"><font face="Bodoni MT Black">&nbsp;<b><i>On this site you have
the possibility to register your Company, and take advantages of xxxxx’s new and
unique Product.</i></b></font></p>
<p class="MsoNormal">&nbsp;</p>
<FORM action="../Busad/formkode.asp"Method="post">
Brugernavn:
<input type="text" name="Brugernavn">
<br>
Password:&nbsp;&nbsp;
<input type="password" name="Password">
<br>
<input type="submit" name="submitName" value="Login">

</FORM>
<p class="MsoNormal">&nbsp;</p>
</body>
</html>

Samt en side med asp-koden, og det er på denne side jeg har problemer, koden ser ud som følger.

<%
dim Brugernavn, Password, strDriver, strPlacering, objCon
Brugernavn=request.form("Brugernavn")
Password=request.form("Password")
strPlacering="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\inetpub\wwwroot\database\Busad.mdb"
set objCon = server.createobject("ADODB.connection")
objCon.open strPlacering

SQL="Insert into gemtdata (Brugernavn,Password) values ('" & Brugernavn & "', '" & Password & "');"
set ObjRec=ObjCon.execute(SQL)
response.redirect"response.asp"
set objRec=nothing
objCon.close
Set objCon=nothing
%>
<html>
<head>

Jeg får en error som siger:
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in INSERT INTO statement.
/Busad/formkode.asp, line 10


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Page:
POST 42 bytes to /Busad/formkode.asp

POST Data:
Brugernavn=tt&Password=tt&submitName=Login

Jeg håber I kan hjælpe mig lidt på vej...
Avatar billede softspot Forsker
26. maj 2006 - 10:35 #1
Prøv at ændre disse 2 linier:

Brugernavn=request.form("Brugernavn")
Password=request.form("Password")

til:

Brugernavn = replace(request.form("Brugernavn") & "", "'", "''")
Password = replace(request.form("Password") & "", "'", "''")

og så skal du iøvrigt sikre dig at de to felter er tekster og at der ikke er andre felter i tabellen som er påkrævede.
Avatar billede ldanielsen Nybegynder
26. maj 2006 - 10:39 #2
For det første ser det jo ud til at SQL er et ugyldigt udtryk, men hvad er der galt?
Det skulle gerne blive til:

Insert into gemtdata (Brugernavn,Password) values ('tt', 'tt');

- og det ser godt nok ud, på betingelse af at der er en tabel der hedder gemtdata, med felterne Brugernavn og Password

Måske er sagen at Password er et reserveret ord, så måske skulle du omdøbe det felt.


Her er lige lidt rettelser:

dim Brugernavn, Password, strDriver, strPlacering, objCon
Brugernavn = request.form("Brugernavn")
Password = Request.Form("Password")
strPlacering = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\inetpub\wwwroot\database\Busad.mdb"
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open strPlacering

SQL = "Insert into gemtdata (Brugernavn,Password) values ('" & Brugernavn & "', '" & Password & "');"

'Du behøver ikke objRec i denne sammehæng:
objCon.Execute(SQL)

'Vent med at redirect'e indtil du HAR lukket:
objCon.close
Set objCon=nothing
Response.Redirect("response.asp")
Avatar billede ldanielsen Nybegynder
26. maj 2006 - 10:40 #3
softspot har ret, ' skal erstattes med '' i SQL'en.

Men i dette tilfælde er det ikke ' der giver fejlen, vel?
Avatar billede medow Nybegynder
26. maj 2006 - 10:49 #4
For det første, så er det korrekt at jeg har to tabeller i gemtdata som hedder henholdsvis brugernavn og password.
Jeg har rettet min kode til følgende;
<%
dim Brugernavn, Password, strDriver, strPlacering, objCon
Brugernavn = replace(request.form("Brugernavn") & "", "'", "''")
Password = replace(request.form("Password") & "", "'", "''")
strPlacering="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=c:\inetpub\wwwroot\database\Busad.mdb"
set objCon = server.createobject("ADODB.connection")
objCon.open strPlacering

SQL="Insert into gemtdata (Brugernavn,Password) values ('" & Brugernavn & "', '" & [Password] & "');"
ObjCon.execute(SQL)

set objRec=nothing
objCon.close
Set objCon=nothing
response.redirect"response.asp"
%>
Er det ikke korretk at med [] skulle jeg komme ud over de resaveret ord?
Men jeg får fortsat en error;
Technical Information (for support personnel)

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in INSERT INTO statement.
/Busad/formkode.asp, line 10


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Page:
POST 42 bytes to /Busad/formkode.asp
Avatar billede medow Nybegynder
26. maj 2006 - 10:51 #5
Det er sætningen: ObjCon.execute(SQL) som lader til at være et problem
Avatar billede eagleeye Praktikant
26. maj 2006 - 11:04 #6
du skal ikke havde [] omkring de data du indsætter de skal være omkring kolonnenavnen sådan her:


SQL="Insert into gemtdata ([Brugernavn],[Password]) values ('" & Brugernavn & "', '" & [Password] & "');"
Avatar billede ldanielsen Nybegynder
26. maj 2006 - 11:05 #7
I givet fald skal det være:

SQL = "Insert into gemtdata (Brugernavn, [Password]) values ('" & Brugernavn & "', '" & Password & "');"

- men er det ikke bedre at holde sig fra reserverede ord?
Avatar billede medow Nybegynder
26. maj 2006 - 11:06 #8
Når jeg retter SQL koden til:
SQL = "Insert into gemtdata (Brugernavn,[Password]) values ('" & Brugernavn & "', '" & Password & "');"

får jeg
Error Type:
Microsoft JET Database Engine (0x80004005)
Operation must use an updateable query.
/Busad/formkode.asp, line 11
Avatar billede michael_stim Ekspert
26. maj 2006 - 11:11 #9
Du skal have skriverettigheder til IUSR(comp.navn) på mappen.
Avatar billede softspot Forsker
26. maj 2006 - 11:11 #10
Det kan skyldes at du ikke har skriverettigheder til databasen (eller den folder som databasen ligger i). Du skal sikre dig at IUSR_XXX (hvor XXX er din maskines navn) har rettigheder til at skrive i din database.
Avatar billede medow Nybegynder
26. maj 2006 - 11:22 #11
I har muligvis ret i ad det skyldes at Mappen er sat til "Read Only", men når jeg prøver at ændre denne værdi på min wwwroot mappe, sige apply og Ok så bliver ændringen ikke gemt. Ved I hvorfor...
Avatar billede eagleeye Praktikant
26. maj 2006 - 11:26 #12
Så det nok fordi du har XP så prøv:

- Åbn denne computer
- Klik på menupunktet Funktioner
- Mappeindstillinger
- Klik på fanen Vis
- Fjern flueben i "Brug Enkel Fildelign" så får du adgang til en fane der hedder sikkerhed, som du skal bruge om lidt.
- Højreklik på mappen hvor databasen ligger
- Vælg egenskaber
- Klik på fanen sikkerhed
- Giv her IUSR_makinnavn skriverettigheder
Avatar billede softspot Forsker
26. maj 2006 - 11:28 #13
Benytter du Windows XP Home? Jeg er selv lige (for første gang) begyndt at arbejde med Home Ed (plejer at benytte XP Pro) og er noget forundret over hvordan man skal sætte sikkerhedsindstillinger på en mappe/fil (uden at starte i safe-mode som admin).

Men opstart i safemode er altså en mulighed.
Avatar billede softspot Forsker
26. maj 2006 - 11:29 #14
Aaah! Det limme være eagleeye havde tricket der :)
Avatar billede medow Nybegynder
26. maj 2006 - 11:29 #15
Har fundet problemet, det var på grund af den ene mappe ikke var en Web-delt mappe.
Men mange tak for hjælpen, så skal jeg bare lige høre hvordan det skal gøres mht. point, skal man dele point ud for kommentar... eller er det kun for svar...
Avatar billede softspot Forsker
26. maj 2006 - 11:32 #16
Det er helt op til dig hvem du synes har hjulpet dig. Dem du synes skal have point, beder du blot om en svar fra... og tildeler så point til disse...
Avatar billede medow Nybegynder
26. maj 2006 - 11:36 #17
Okay, hvad så med at jeg får et svar fra softspot og ldanielsen, og dele lige over... og så skal i naturligvis have mange tak for hjælpen :)
Avatar billede ldanielsen Nybegynder
26. maj 2006 - 11:39 #18
Selv Tak
Avatar billede softspot Forsker
26. maj 2006 - 11:39 #19
Velbekomme :)
Avatar billede softspot Forsker
26. maj 2006 - 11:42 #20
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester