2012-03-08 2 views
1

Я занимаюсь разработкой веб-приложений с C# & SQL Server 2008.Как использовать тип данных TIME в SQL Server 2008 и C#?

У меня есть чтение данных, который считывает столбец PlayTime, определяемый как TIME типа данных.

Я хочу написать функцию, которая возвращает значение PlayTime.

private static Timespan GetTime(IDataReader rdr, string columnName)` 
{ 
    int index = rdr.GetOrdinal(columnName); 

    if (rdr.IsDBNull(index)) 
    { 
     return ; // Here I want to return null or zero 
    } 

    return (TimeSpan)rdr[index]; 
} 
  1. Правильно ли я с помощью Timespan для типа данных во времени?

  2. Как вернуть null, если значение datareader ничего не значит?

С наилучшими пожеланиями,

RedsDevils

+1

Рассматривали ли вы возвращения обнуляемого TimeSpan –

+0

Как вы сказали, мне нужно поставить «Timespan»? , может вернуть null? – RedsDevils

ответ

1

Что-то вроде этого:

private static TimeSpan? GetTime(IDataReader rdr, string columnName) 
{ 
    int index = rdr.GetOrdinal(columnName); 
    if (rdr.IsDBNull(index)) 
    { 
     return null; 
    } 
    return (TimeSpan)rdr[index]; 
} 
+0

Спасибо за ответ! – RedsDevils

+0

Нет проблем. Рад помочь – Arion

1

Вы должны использовать NULLABLE TimeSpan

private static Nullable<TimeSpan> GetTime(IDataReader rdr, string columnName) 
     { 
      int index = rdr.GetOrdinal(columnName); 
      if (rdr.IsDBNull(index)) 
      { 
       return null; 
      } 
      return (Nullable<TimeSpan>)rdr[index]; 
     } 
+0

Спасибо за ответ. В таблице эта колонка «PlayTime» - это «время» DataType: мне не нужна дата. Как вы показываете, он будет содержать дату, не так ли? – RedsDevils

+0

использовать обновленный код – PraveenVenu

+0

Нужно ли добавить «Nullable» в return rdr [index], это только преобразование типа потребности? – RedsDevils