'Åben forbindelse (top af side) Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("DinDatabase.mdb;")
'indsæt data conn.execute("insert into dinTabel(fornavn,efternavn) values('"& replace(request.form("efternavn"),"'","''") &"','"& replace(request.form("efternavn"),"'","''") &"')")
'Luk forbindelse når den ikke skal bruges mere (i bunden af side) conn.close
I tilfælde af at der er indtastet ' i et af navnene bliver vi nød til at escape tegnet ved at indsætte 2 istedet. Derfor har jeg indsat replace koden.
Havde også fået valgt "efternavn" to gange. Det skal selvfølgelig være "fornavn" og "efternavn": conn.execute("insert into dinTabel(fornavn,efternavn) values('"& replace(request.form("fornavn"),"'","''") &"','"& replace(request.form("efternavn"),"'","''") &"')")
set cn = Server.CreateObject("ADODB.Connection") cn.Open dinConnStr ' find evt. formatet på connectionstring.com
set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = cn cmd.CommandText = "INSERT INTO person(fornavn, efternavn) VALUES(?,?)" cmd.Parameters.Append cmd.CreateParameter("@fornavn", adVarChar, adParamInput, 35, Request.Form("fornavn")) cmd.Parameters.Append cmd.CreateParameter("@efternavn", adVarChar, adParamInput, 35, Request.Form("efternavn")) cmd.Execute()
' Hvis du skal bruge det nye ID efterfølgende (og du har en autonumber-kolonne i din tabel), ' kan du benytte flg. kode set rs = cn.Execute("SELECT @@IDENTITY") if not rs.eof then id = CLng(rs(0)) end if rs.close set rs = nothing
For at du kan bruge de tekstuelle konstanter til ADO (f.eks. adVarChar og adParamInput), skal du bruge denne META-header som jeg anbefaler du placerer i toppen af din global.asa, udenfor script-sektionen (så skal du ikke tænke mere på den). Det kan sagtens være det eneste der står i din global.asa. Global.asa skal som bekendt ligge i roden af dit site eller i roden af en virtuel mappe på dit site:
Et tips til at finde connectionstrings: opret en fil på dit skrivebord og kald den access.udl. dobbeltklik derefter på den og vælg provider, databasefil og evt. brugernavn/adgangskode til databasen. Test forbindelsen og hvis den er OK, så luk det skæmbillede du lige at sat forbindelsen op i og åbn access.udl i notepad. Nu skulle det være åbenlyst hvad du skal gøre herfra :)
Du skal såvidt muligt bruge den provider der passer til det der er installeret på din host, men det er givetvis OLE DB for Access. Ældre versioner af access kan muligvis have behov for en Jet-driver, men vælg som udgangspunkt OLE DB.
Okay. Det ligner slet ikke det jeg normalt har brugt. Mit spørgsmål er en udløber af dette spørgsmål: http://www.eksperten.dk/spm/800031 Som I kan se er det slet ikke den kode jeg er vant til at bruge. Kan I evt. hjælpe mig videre i http://www.eksperten.dk/spm/800031 ? Ellers må jeg prøve om jeg kan omskrive det til et af jeres eksempler.
Jeg vil da klart anbefale dig at bruge command-objektet, da det fjerner behovet for at håndtere specielle tegn som apostrof i de værdier du putter i forspørgslen - command-objektet sørger for at få oversat værdierne til det du angiver i parametrene. Ud over det sikkerhedsmæssige aspekt er håndteret, synes jeg jo at det bliver meget mere strømlinet og overskueligt end den gamle/traditionelle SQL-streng sammensættelsesmetode.
Det kan under ingen omstændigheder anbefales at bruge recordset og cursors til at opdatere data i en database på et website. Det koster aaalt for mange resurser at holde sådan en fætter i luften. Du bør helt klart overveje enten den metode som fennec eller jeg viser...
Jeg vil lige understrege at jeg er fuldstændig enig med softspot. Recordset og cursors er ikke en metode jeg vil anbefale. Eneste grund til at jag lavede koden, var fordi det er en metode du kender til.
softspot >> Jeg kan dog bedst lide selv at kontrolere mine data, da jeg så kan give fejlmeddelser tilbage til brugeren. Derfor er den gamle/traditionelle SQL-streng mere min stil :o)
Takker og jeg skal nok tage mig sammen og kigge lidt på mysql og jeres metode i stedet for access og min junkkode hehe..men skulle lige have noget til at virke hurtigt!
fennec >> Der er ikke noget som forhindrer dig i at kontrollere validiteten af dine data inden du smider dem i en command-parameter - faktisk bør dette altid gøres, netop for at give brugeren nogle tilbagemeldinger. Validering af data har ikke (bør ikke have) noget med skrivning af data i databasen at gøre. Det er for dyr en måde at validere på, hvis data først skal i databasen inden fejlene findes...
totalpc >> Der er som sådan ikke noget galt i at bruge Command-objektet eller SQL-streng sammensætningssnask på en Access-database, så med mindre du rent faktisk har et behov for at skifte, ville jeg da bare fortsætte (og så bruge energien på at lære hvordan command-objektet og parametre fungerer ;-)).
Ok softspot. Tak for input. Det skal med i overvejelserne :)
Synes godt om
Ny brugerNybegynder
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.