2009-08-29 15 views

Respuesta

12

Hay 3 enfoques comunes aquí;

  • si usted está hablando de object (tal como se lo trae desde un lector de datos), entonces DBNull.Value puede representar nula. No suelo dejar esto fuera de la capa de datos, aunque
  • debido a la historia de .NET 1.1, DateTime.MinValue se interpreta comúnmente como null; un número mágico, tal vez, pero funciona y es compatible con la mayoría de los datos vinculados, etc.
  • en .NET 2.0, Nullable<T> significa que puede usar DateTime? - es decir, un nulo de DateTime; solo use DateTime? donde quiera que se refiera a un DateTime que puede ser nulo, y puede darle un valor de null o un DateTime válido.

Algunos otros pensamientos sobre los datos de acceso y los nulos:

  • para pasar de un SqlCommand que necesidad uso DBNull.Value, no null - véase más adelante
  • durante la lectura de datos desde un lector, tiendo a comprobar reader.IsDbNull(ordinal)

cosas comando (con Nullable<T> como el ejemplo):

param.Value = when.HasValue ? (object)when.Value : DBNull.Value; 
+0

Mark, muchas gracias. – odiseh

3

Uso DateTime?

Qué problema tiene, específicamente?

- Editar

Sólo así que está claro, eso es un Nullable objeto DateTime, no una pregunta :)

DateTime? t = null; 

- Edit

En respuesta a las observaciones, comprobar que de esta manera:

DateTime? theTime; 

if(table["TheColumn"] == DBNull.Value){ 
    theTime = null; 
} else { 
    theTime = (DateTime) table["TheColumn"]; 
} 
+0

No puedo enviar el objeto (una columna de DataRow) a DateTime. – odiseh

+0

Respondido a través de la edición. Solo necesita comprobar si es igual a 'DBNull.Value'. –

+0

Oh lo encontré Gracias. – odiseh

Cuestiones relacionadas