ADO.NET SqlCommand: невозможно вставить значение NULL в столбец - PullRequest
0 голосов
/ 15 апреля 2011
sCnd =  "INSERT INTO .dbo.Table(Col1, Col2, Col3) Values (1,2,3);

using (DbCommand tempCommand2 = CommandFactory.CreateCommand(db))
{
    tempCommand2.CommandText = sCmd;
    tempCommand2.ExecuteNonQuery();
}

Таблица также имеет Col4, который не допускает нулевое значение.

Ошибка: Невозможно вставить значение NULL в столбец Col4

Когда я выполняю sCmdв Management Studio все работает нормально.

Почему я получаю исключение?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Вы получаете исключение, потому что вы не вставляете значение для столбца Col4, которое не допускает nulls и, я могу только предположить, не имеет значения по умолчанию.

Но онокажется, вы задали не тот вопрос;Разве вы не хотите спросить, почему запрос выполняется в SSMS?

Я подозреваю, что ответ на , что вопрос будет похоронен где-то в фактическом синтаксисе, который вы выбрали невключить.

2 голосов
/ 15 апреля 2011

Таблица также имеет Col4, который не допускает нулевое значение.

Вот ваш ответ. Если Management Studio все равно работает, возможно, оно вставляет значение по умолчанию?

1 голос
/ 15 апреля 2011

Если вы не укажете значение для столбца, будет взято NULL, если только не существует constraint, который говорит об обратном.

Поскольку Col4 не допускает NULL и выглядит так, как будто у него нет значения default constraint, поэтому вы получаете ошибку.

Вы не показали SQL, который вы выполняете в SSMS, но я думаю, другая база данных (производство / разработка), другая таблица?

...