Avatar billede arnebalsby Nybegynder
26. maj 2009 - 20:05 Der er 5 kommentarer

SqlParameter med c# - skal man sætte DbType ?

Hej

Jeg sætter en antal sqlParameters til diverse SQL ting jeg laver, og putter dem i en arraylist, f.eks. sådan her hvor custID er long i c# og bigint med lenght 8 i SQL Server:

sqlParamList.Add(new SqlParameter("@custID", custID));

Men jeg sætter ingen DBType, og indtil nu har det virket fint.

Er det nødvendigt at sætte denne DBType ?

Eller hvornår er det nødvendigt og hvornår ikke ?

Med venlig hilsen
Avatar billede arne_v Ekspert
26. maj 2009 - 20:26 #1
Du boer altid saette type for at goere din kode mere type sikker.
Avatar billede arnebalsby Nybegynder
26. maj 2009 - 20:35 #2
Men det er ikke nødvendigt eller hur ?

Kan der monstro være nogen fordel i at gøre det i forhold til SQL-Injection problemer ?
Avatar billede arnebalsby Nybegynder
26. maj 2009 - 20:39 #3
Men den sætter jo selv DBDataType har jeg netop fundet ud af, jeg tror altså det må være helt fint uden...... Men jeg er stadig interesseret i mere info
Avatar billede aaberg Nybegynder
27. maj 2009 - 09:00 #4
Det er i de fleste tilfælde ikke nødvendigt at sætte DbType, og det har ingenting at sige i forhold til SQL injection.

Når du bruger: new SqlParameter("@custID", custID), vil SqlParameter klassen automatisk sætte DbType til en databasetype som tilsvarer datatypen på custID variablen. Det vil altså sige, at hvis custID er en int, vil DbType automatisk sættes til DbType.Int32. Hvis custID er en Guid, vil DbType automatisk sættes til DbType.Guid, osv.

I nogle tilfælde kan det være du er nød til at sætte den, hvis eksempelvis database datatypen ikke den samme som .NET datatypen. Men i disse tilfælde er det alligevel foretrukket, at man konvertere .NET datatypen, før det sendet til databasen.
Avatar billede arne_v Ekspert
03. juli 2009 - 22:35 #5
Jeg ville altid sætte typen eksplicit.

Det må være mere type sikkert.
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