2013-05-03 5 views
-2

Я использую таблицу LOG который имеет 3 колонки:Нулевое значение в SQL Server 2005 таблица

  • Login nvarchar(50)
  • Date int
  • Logout nvarchar(50)

Теперь, если я не войти значение в столбце Logout, то необходимо сохранить NULL. Но для меня он хранится как " ".

Я дал определение таблицы в скриншоте 1 и табличные данные в скриншоте 2.

enter image description here

enter image description here

+0

что это такое значение по умолчанию? –

+1

Вы можете отправить запрос на вставку? –

+2

Вы уверены, что DAL * не * вставляет '' '' (или '' '')? Кроме того, рассмотрите возможность использования * более подходящих типов данных * для столбцов (например, DATETIME2 или DATETIMEOFFSET) - это также «исправит» проблему
, собирает соответствующую информацию, отсутствующую (точный день входа в систему/выход из системы), и позволяет разумное упорядочение , И я даже не собираюсь спрашивать, почему столбец «Дата» является столбцом (идентификатор) PK. – user2246674

ответ

0

Может быть в запросе INSERT вы используете INSERT INTO лога (Логин, Дата, Выход) VALUES (...) и значение «» в качестве значения для поля «Выход». Проверьте свою инструкцию insert и убедитесь, что вы не совершаете эту ошибку.

0

Список альтернатива для решения этой проблемы:

  1. Установить значение по умолчанию для этого столбца.
  2. Предоставить NULL с надписью «NULL» в поле «Вставить запрос».
  3. Выберите данные, если «Найдено», а затем NULL. (Без изменений при вставке)
  4. Обновить текущие данные, если «найдено», а затем установлено значение NULL.

Спасибо.

+0

Фактический сценарий: если я забуду вставить значение, тогда оно должно быть как «NULL» ** , Для этого я могу использовать значение по умолчанию. Но я хочу проверить, является ли поле ** NULL (или) NOT **. Как я могу проверить это ...? –

+0

, пожалуйста, см. Текстовое поле вашего приложения, я думаю, что есть пустая строка или отправьте мне свой запрос на ввод. – Anvesh

+0

Sry @Anu, я не вставляю значение. Я обновляю таблицу со временем выхода ... Cmd = new SqlCommand («update ActLog set Logout = '" + TimeOut.Text + "' где Date = '" + curoutdate + "'", Con); –

0

Попробуйте этот код.

if (!string.IsNullOrEmpty(Impdate.ToString())) 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = Impdate; 
       } 
       else 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = SqlDateTime.Null; 
       } 
0

Попробуйте как этот

if (!string.IsNullOrEmpty(Impdate.ToString())) 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = Impdate; 
       } 
       else 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = ""; 
       }