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..
datum
10 svar · 442 visningar · startad av MizzK
Använd RegularExpressionValidator för att validera rätt format, konvertera sedan till DateTime med DateTime.Parse(string);
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?
Är det Access så ska datumet omges av ##, #2004-01-02#
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
skriv # inom '' alltså: '#datum#'
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
glömt skriva det men jag har för ett bra tag sedan löst problemet, precis som gladh skrivit.
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.
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
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å.