Avatar billede neoman Novice
06. oktober 2007 - 14:11 Der er 3 kommentarer og
2 løsninger

Bedste måde at adde en varchar parameter

Jeg er løbet lidt sur i docs på msdn omkring en parameter, fordi det ikke er tydeligt for mig hvad der er hvad.

1. command.Parameters.Add("@Description", "Beverages")
(msdn mener det er en god måde for varchars - http://msdn2.microsoft.com/en-us/library/40959t6x(VS.80).aspx
og det er denne jeg har brugt hidtil.

2. Så er der denne her:
            cmd.Parameters.Add("@UserName", System.Data.SqlDbType.VarChar)
            cmd.Parameters("@UserName").Value = UserName

3. Og så er der også denne:
            cmd.Parameters.Add("@UserName", System.Data.SqlDbType.VarChar,20)
            cmd.Parameters("@UserName").Value = UserName

Desværre er det ikke helt tydeligt for mig hvad funktionen af parameteren Size (her=20) er.
a.  Skal den beskære parameterværdien ned til 20 chars
b.  er dens funktion at brokke sig i fald len(parametervalue) >20
c.  eller hvis len(parametervalue)<>20?

Jeg kan sagtens eksperimentere mig frem til resultatet, men synes det giver bedre mening at få lidt hints til "god praksis" :)
Avatar billede arne_v Ekspert
06. oktober 2007 - 14:29 #1
Forudsat at feltet er VARCHAR(20) så ville jeg bruge #3.

Det giver potentielt det bedste check på data. Jeg skriver potentielt, fordi
jeg ikke er helt sikker på hvormeget der bliver checket.

Længder under 20 er OK.

Jeg er ikke klar over om den trunkerer eller smider en exception hvis længden er
over 20. Den burde smide en exception.
Avatar billede dr_chaos Nybegynder
06. oktober 2007 - 15:50 #2
Jeg mener at den trunkerer ved længder over 20.
I asp.net 2.0 er der kommet en 4. som oftes bruges:
command.Parameters.AddWithValue("@Description", "Beverages")

Jeg er enig med arne om at jeg ville bruge 3, den bruger jeg selv
Jeg mener du kan få den som en oneliner:
cmd.Parameters.Add("@UserName", System.Data.SqlDbType.VarChar,20).Value = UserName;
Avatar billede neoman Novice
07. oktober 2007 - 22:00 #3
Ja okay, jo flere eksplosioner man kan få inden db-kaldet des bedre:) Jeg er i gang med at implementere 3 som en idiotsikring, og så får vi se om jeg kan gå hen og blive en større idiot og overkomme sikringen:)

bare læg et svar begge
Avatar billede arne_v Ekspert
07. oktober 2007 - 22:27 #4
.
Avatar billede dr_chaos Nybegynder
07. oktober 2007 - 22:50 #5
Svar :)
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
Computerworld tilbyder specialiserede kurser i database-management

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