Avatar billede mydream Nybegynder
08. december 2011 - 20:21 Der er 5 kommentarer og
1 løsning

Parameter i SQL

Jeg kan ikke få følgende kode til at virke:

dim navn,tabel,nummer,datooprettet,email
navn = "Mette"
nummer = "243443"
datooprettet = "2011-01-01"
tabel = "dbo.abc"
email = "mail@mail.dk"


Cmd.Parameters.Append(Cmd.CreateParameter("@navn2",200, 1, 50, navn))
  Cmd.Parameters.Append(Cmd.CreateParameter("@email2",200, 1, 50, email))
Cmd.Parameters.Append(Cmd.CreateParameter("@nummer2", 3, 1, 50, nummer))
Cmd.Parameters.Append(Cmd.CreateParameter("@datooprettet2", 133, 1, 50, datooprettet))
Cmd.CommandText = "insert into "&tabel&" (nummer,datooprettet,navn,email) values (@nummer2,@datooprettet2,@navn2,@email2)"


 
  cmd.CommandType = adCmdText
Cmd.Execute

Fejlen lyder:
[Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the variable '@nummer2'.

Men jeg kan ikke bare sige dim @nummer2 for det vil den heller ikke accceptere.
Avatar billede softspot Forsker
08. december 2011 - 22:24 #1
Prøv lige dette:

Cmd.CommandText = "insert into "&tabel&" (nummer,datooprettet,navn,email) values (?,?,?,?)"

Cmd.Parameters.Append(Cmd.CreateParameter("@nummer2", 3, 1, 50, nummer))
Cmd.Parameters.Append(Cmd.CreateParameter("@datooprettet2", 133, 1, 50, datooprettet))
Cmd.Parameters.Append(Cmd.CreateParameter("@navn2",200, 1, 50, navn))
Cmd.Parameters.Append(Cmd.CreateParameter("@email2",200, 1, 50, email))

Rækkefølgen af parametrene er VIGTIG og navngivne parametre understøttes (såvidt jeg ved) ikke i ADO (måske derfor rækkefølgen er vigtig...)

Alternativt kan du forsøge dette:

Cmd.CommandText = "insert into "&tabel&" (nummer,datooprettet,navn,email) values (?,?,?,?)"
cmd.execute , array(nummer, datooprettet, navn, email)
Avatar billede mydream Nybegynder
09. december 2011 - 10:41 #2
Det har jeg også prøvet men så kommer denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

[Microsoft][ODBC SQL Server Driver]Optional feature not implemented

/parametre/setind.asp, line 54

Linje 54 er Cmd.Execute
Avatar billede softspot Forsker
09. december 2011 - 11:12 #3
Prøv lige at læse igennem dette link: http://support.microsoft.com/kb/214459
Avatar billede softspot Forsker
13. december 2011 - 12:48 #4
Hvordan skrider læsningen frem...?
Avatar billede mydream Nybegynder
13. december 2011 - 13:05 #5
Undskyld Softspot. Jeg har læst og lært :) Og du må meget gerne smide et svar. Det er lidt en ny verden for mig, men det går fremad, og hvis det giver mig sikkerhed for ikke at blive hacket af den vej, så er det hele arbejdet værd.
Avatar billede softspot Forsker
13. december 2011 - 13:27 #6
Godt at høre :-)

Hvis du gennemfører implementeringen af databasekald med Command-objektet, fjerner du i det mindste én af de mange angrebsvektorer cyberpiraterne kan benytte sig af.

Vær dog opmærksom på at der er flere nuancer af disse angreb. Du kan også komme til at kæmpe med værdimanipulation, således en angiber ændrer på et id for at få adgang til en anden brugers oplysninger end sine egne. Det sikrer parameterisering dig ikke mod. Der skal du sørge for at den bruger som forsøger at læse data, rent faktisk har lov til at læse dem...

Andre angrebsvektorer du skal være opmærksom på er, Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF). Så dem op på nettet for at få nærmere forklaring og mulige løsninger på disse problemer. Kort fortalt er XSS injection af clientscript på dine sider bla. via de input-felter du måtte have eksponeret. CSRF er (såvidt jeg ved) hijacking af en anden brugers session til at få adgang til oplysninger som man ikke selv er autoriseret til at læse.

Generelt set bør du sikre dig mod disse angreb fra alle "kanaler", dvs. bla. Request.QueryString, Request.Form, Request.Cookies, headers m.m. - kort sagt: alt input fra kilder du ikke stoler på.

Der er nok at tage sig til, men hvis du får en forståelse for, hvordan du sikrer dig og får en rutine i at implementere det, så er det givetvis ikke så slemt at have med at gøre. Det er bare skod at skulle indføre det på bagkant (når systemet er kodet færdigt) :-)
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