webForumDet fria alternativet

datum

.NETur .NET

10 svar · 442 visningar · startad av MizzK

Medlem sedan juni 2003410 inlägg
Frågan#1

Funderar på hur man gör när man vill kolla så att det användaren skriver in i textboxen är i datumformat. och hur man sedan konverterar datumstringen till datetime.. för att jag sedan skall kunna skriva det till databasen..

Medlem sedan apr. 20012 266 inlägg
#2

Använd RegularExpressionValidator för att validera rätt format, konvertera sedan till DateTime med DateTime.Parse(string);

Medlem sedan juni 2003410 inlägg
#3

har fått den till datum men nu har jag problem med att läsa det till db:n så här har jag gjort.

ddatum är en date variabel

            Dim strsql2 As String = "Select * from aktivitet where datum =  '" & ddatum & "'  "

vad e problemet?

Medlem sedan apr. 20012 266 inlägg
#4

Är det Access så ska datumet omges av ##, #2004-01-02#

Medlem sedan juni 2003410 inlägg
#5

skrev så här

 Dim strsql2 As String = "Select * from aktivitet where datum =  #' & ddatum & '# "

men fick följande felmeddelande:

Syntaxfel i datum i frågeuttrycket 'datum = #' & ddatum & '#'.

testade även utan ' '. och fick samma fel..

När jag skriver

Dim strsql2 As String = "Select * from aktivitet where datum =  ' & ddatum & ' "

eller

Dim strsql2 As String = "Select * from aktivitet where datum =  '" & ddatum & "' "

får jag följande felmedd:

Typblandningsfel i villkorsuttryck

Även kollat av med db och koden.. båda är datumformat

Medlem sedan juli 2004206 inlägg
#6

skriv # inom '' alltså: '#datum#'

Medlem sedan maj 20012 812 inlägg
#7

Om du använder dig av access så skall datumet skrivas inom # och endat #

SELECT * FROM [Table] WHERE [Column] = #2000-10-10#

Vilket ger dig

"SELECT * FROM [Table] WHERE [Column] = #" & ddatum & "#"

- Magnus

Medlem sedan juni 2003410 inlägg
#8

glömt skriva det men jag har för ett bra tag sedan löst problemet, precis som gladh skrivit.

Medlem sedan maj 20021 466 inlägg
#9

I ASP.NET ska du aldrig skriva arguments värde direkt i frågan. Det är en säkerhetsrisk och en källa till många fel.

Använd istället klasser som ärver från IDbCommand och IDataParameterCollection.

OleDbCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM [Table] WHERE [Column] = ?";
cmmand.Parameters.Add(null, ddatum);

Byt ut OleDbCommand mot den klass du använder. Syntaxen skiljer sig lite mellan olika databasklasser.

Medlem sedan maj 20012 812 inlägg
#10

I ASP.NET ska du aldrig skriva arguments värde direkt i frågan. Det är en säkerhetsrisk och en källa till många fel

Det är ingen säkerhetsrisk om man vet vad man gör, men ett sätt att komma runt SQL injections är att använda parametriserad fråga istället för att skriva ut variablen direkt.

Och det gäller inte bara ASP.NET utan något som man alltid borde göra, om man nu använder sig av SP's.

- M

Medlem sedan maj 20021 466 inlägg
#11

Gladh skrev:

Det är ingen säkerhetsrisk om man vet vad man gör

Vet man det då, alltid? Murphys lag vet du. Det är bättre att vara på den säkra sidan och göra det till en vana att använda Parameters. Det blir dessutom snyggare kod då.

135 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)