Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Problema conversione Datetime sulle INSERT e UPDATE
martedì 24 marzo 2009 - 20.03
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Samb1985
Profilo
| Junior Member
180
messaggi | Data Invio:
mar 24 mar 2009 - 20:03
Non riesco ad effettuare gli INSERT e UPDATE su db sql server express 2005 in cui c'è un campo datetime.
Si tratta di un'applicazione scritta in c# ed utilizzo la classe SqlClient in particolare il seguente codice:
SqlConnection CN = new SqlConnection(conn);
String sql = "UPDATE Macchina SET Time = '"+DateTime.Now.ToString()+"' WHERE (ID = '"+myid+"')";
CN.Open();
SqlCommand CMD = new SqlCommand(sql, CN);
CMD.ExecuteNonQuery();
Viene lanciata la SqlClient Exception.
Ho anche provato a passare CONVERT(datetime,'"+DateTime.Now.ToString()+"',103) ma non funziona.
Eseguendo la stringa sul server come query viene visualizzato questo errore:
"Messaggio 242, livello 16, stato 3, riga 1
La conversione del tipo di dati da char a datetime ha generato un valore di tipo datetime non compreso nell'intervallo dei valori consentiti.
L'istruzione è stata interrotta."
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 24 mar 2009 - 21:38
Ciao,
>SqlConnection CN = new SqlConnection(conn);
>String sql = "UPDATE Macchina SET Time = '"+DateTime.Now.ToString()+"'
>WHERE (ID = '"+myid+"')";
>CN.Open();
>SqlCommand CMD = new SqlCommand(sql, CN);
>CMD.ExecuteNonQuery();
a parte il solito problema del SQL Injection in cui puoi incappare facilmente con una sintassi del genere (e a tal proposito leggi qui:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx
), il formato del datetime.now come stringa non è corretto per sql server. Usa le query parametriche e definisci un parametro smalldatetime o datetime dalla collection Parameters dell'oggetto SQLCommand, valorizzandolo con il semplice DateTime.Now. Non passare da stringa, ti basta usare il corretto datatype.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Samb1985
Profilo
| Junior Member
180
messaggi | Data Invio:
mar 24 mar 2009 - 22:38
Grazie problema risolto velocemente con una semplice Query parametrica.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !