15. august 2006 - 17:55Der er
14 kommentarer og 1 løsning
Datoformat SQL Server tilgået via C# og ASP.NET
Er ved at lave et ASP.NET program i C# med en MS SQL Server DB. I tabellen PizzaOrdreTabel er defineret et felt: OrdreDato af typen datetime.
Herunder er koden til at oprette en post i PizzaOrdreTabellen. Det underlige er at linie 2 giver en dato i formatet: dd-mm-aaaa tt:mm:ss (bindestreger i datoen) hvilket SQL Server ikke
accepterer. Det giver følgende fejl:
System.Data.SqlClient.SqlException: The conversion of a char data type to a datetime data type resulted in an out-of-range
datetime value. The statement has been terminated. at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at
ASP.OpretOrdre_aspx.RegistrerOrdre()
Når jeg bruger linie 12 (som nu er kommenteret ud) med / kører alt fint.
Altså: databasen forventer amerikansk datoformat, mens systemet, naturligt nok, leverer en dansk formatteret dato. Er der en parameter jeg kan indsætte så jeg får rigtigt datoformat begge steder??
Jeg vil nødigt til hard-codemæssigt at fjerne bindestregerne og anvende Convert.ToDateTime.
Får nu følgende fejl: System.Data.SqlClient.SqlException: Prepared statement '(@dtDato datetime)INSERT into PizzaOrdreTabel values (4,1,1,'15-' expects parameter @dtDato, which was not supplied. at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at ASP.OpretOrdre_aspx.RegistrerOrdre()
fortæller over for SQL serveren at der er en parameter som hedder "@dtDato" og at den er af tyben DateTime. Parameteren henviser til der hvor at der er skrevet "@dtDato" i SQL'en:
Du må gøre et eller andet anderledes? for det fungere altså korrekt her hos mig.
En af fordelene (der er flere) ved parametre er at du ikke behøver at tænke på skråstreger eller noget. Du fortæller at du har i siden at give den en DateTime-værdi, og så finder den selv ud af at oversætte til det korrekte format for dern anvendte database.
Prug parameter. Det spare deig for mange problemer og det øger endda sikkerheden i din applikation!
Du kan jo prøve at starte med at lave drpData1.SelectedIndex og drpData2.SelectedIndex i det ovenstående om til parametre. Og du kan bare spørge hvis du får problemer. :^)
Ja, jeg skal vist lige have fat i min MSDN igen. Tak endnu en gang.
Synes godt om
Ny brugerNybegynder
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.