Проблема со свойством столбца SQL Server по умолчанию в ASP.NET - PullRequest
1 голос
/ 01 марта 2011

Я уже добавил определенное значение по умолчанию 'default.gif' в столбец с типом данных ntext.

, затем на странице aspx я поместил элемент управления загрузкой файлов и принял его значение имени файла в качестве параметра.в запросе INSERT к столбцу.я пытался указывать на определенный файл, когда никто не загружен, поэтому у каждого элемента будет изображение, даже если пользователь его не загрузил!

получаю пустое значениев поле, даже ноль и даже две цитаты.

Просто пусто!Интересно, почему это не добавляет значение по умолчанию!

Ответы [ 2 ]

2 голосов
/ 01 марта 2011

Значение по умолчанию для столбца используется только при выполнении операции INSERT и либо:

  • Столбец не включен в список столбцов для операции вставки, либо,
  • Столбец включен в список столбцов для операции вставки, но соответствующая позиция в списке VALUES задается как DEFAULT, например:

INSERT INTO Table1 (FileName,/* other columns */)

VALUES(DEFAULT,/* other values */)

Я предполагаю, что, какой бы ни был ваш уровень данных (вы не указали один, который я вижу), не способен сгенерировать оператор INSERT в этой форме.


Ваш код:

using (SqlCommand comm = new SqlCommand("INSERT INTO Teachers(Name, PictureFileName, Blog, IsAdmin) VALUES (@Name, @PictureFileName, @Blog, @IsAdmin);", conn))

Вам потребуется добавить новый код, например:

string insertStatement = "INSERT INTO Teachers(Name, Blog, IsAdmin";
if(!String.IsNullOrWhitespace(/* Wherever you get the picture file name from */)
{
   insertStatement += ", PictureFileName";
}
insertStatement += ") VALUES (@Name, @Blog, @IsAdmin";
if(!String.IsNullOrWhitespace(/* Wherever you get the picture file name from */)
{
   insertStatement += ", @PictureFileName";
}
insertStatement += ");";

Затем используйте эту переменную insertStatement вКонструктор SqlCommand. Возможно, вы захотите добавить условное добавление параметра @PictureFileName, и, если это критическая часть приложения, вы можете использовать построитель строк для создания этого оператора вставки или использовать код форматирования строки.

0 голосов
/ 01 марта 2011

Убедитесь, что запрос, реализующий загрузку, вставляет в столбец значение NULL, а не пустую строку.Простое прохождение пустой строки (то есть '') не обязательно означает, что вы получите вставленное значение по умолчанию.

...