Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

venerdì 14 dicembre 2007

Inserire un valore null in un campo datetime di SQL Server

L'applicazione che sto sviluppando recupera una serie di informazioni da una base di dati, comprese alcune date. Poiché i campi datetime nel database ammettono il valore null, per manipolare le date utilizzo il tipo Nullable<DateTime>, grazie al quale riesco facilmente a capire se nessuna data è stata specificata nella base di dati. Questo sistema ha però un problema. Supponiamo di dover aggiornare un campo datetime, inserendo al suo interno il valore null. Se io creo un oggetto SqlParameter di tipo SqlDbType.DateTime (con il parametro chiamato @dataScandenza) e imposto la sua proprietà Value su null, andando ad eseguire il metodo SqlCommand.ExecuteNonQuery si ottiene il seguente messaggio di errore:

The parameterized query '...' expects the parameter '@dataScadenza', which was not supplied.

Eppure il parametro è stato correttamente aggiunto all'oggetto SqlCommand. In questo caso il messaggio di errore è fuorviante: in realtà il parametro è stato specificato, ma il suo valore non è valido.

Per risolvere il problema, nel caso in cui si voglia inserire un valore null in un campo datetime di SQL Server, si deve ricorrere al valore SqlDateTime.Null. Per semplificare il tutto, ho definito una routine che prende in ingresso il nome del parametro, un oggetto di tipo Nullable<DateTime> e restituisce un SqlParameter impostato nel modo corretto:

 

private SqlParameter CreateDateTimeParameter(string parameterName, DateTime? date) { SqlParameter parameter = new SqlParameter(parameterName, SqlDbType.DateTime); if (date.HasValue) parameter.Value = date.Value; else parameter.Value = SqlDateTime.Null; return parameter; }

E il gioco è fatto Smile

Technorati Tag: ,,,,

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (5) | Filed Under [ C# ADO .NET & SQL SQL Server ]

[70-529] Errata corrige #5

Altro errore di codice nel Self-Paced Training Kit per l'esame 70-529. Omai sono sicuro che si tratti di discriminazione... In questo post avevo segnalato gli errori in in due listati C#, mentre il corrispondente in VB .NET era corretto. E la stessa cosa accede a pagina 95; nel codice C# viene fatto questo controllo:

 if (Session["UserID"] != null)

Tuttavia, nel corpo dell'if si aggiunge alla Session un oggetto con chiave UserID , invece si recuperarlo. Un'occhiata alla versione VB .NET chiarisce ogni dubbio: prima di aggiungere l'oggetto alla sessione, bisogna verificare che Session["UserID"] sia uguale a null, e non diverso

Ma cosa vi ha fatto di male il C#, per trattarlo così?

Technorati Tags: , , , ,

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) | Filed Under [ C# VB .NET ASP .NET Certificazioni ]

LiveNet Wrapper for Windows Live Developing

Su CodePlex, a questo indirizzo, è disponibile un wrapper realizzato in .NET che facilita l'utilizzo dei Windows Live Tools nelle proprie applicazioni Web. Attualmente sono supportate solo le Live Photos API. Tutti i dettagli dell'annuncio sono disponibili in questo post.

Technorati Tags: , , ,

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) | Filed Under [ ASP .NET ]

Office Live Workspace: proviamolo!

Hello Marco
Thanks for signing up for Microsoft Office Live Workspace beta!

Qualche minuto fa ho completato la registrazione al servizio Office Live Workspace... Adesso vado subito a provarlo Wink

Technorati Tag:

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (3) | Filed Under [ Windows Related ]

Powered by:
Powered By Subtext Powered By ASP.NET