2012-06-19 4 views
2

Я написал хранимую процедуру SQL Server, которая включает параметр DateTime. Этот параметр может быть нулевым или содержать допустимое значение даты.Вставить NULL DateTime с хранимой процедурой SQL Server из C#

Так определение моей переменной в моей процедуре ниже:

@piPurchase_Date DATETIME = NULL 

От C# добавить параметр следующим образом:

SqlParameter parameter = new SqlParameter("@piPurchase_Date", SqlDbType.DateTime); 
parameter.Value=datePurchaseIssueDate.Checked ? datePurchaseIssueDate.Value : SqlDateTime.Null; 

Пока все вроде нормально, но когда я называю Update метод на DataAdaptor Я получаю следующую ошибку:

Failed to convert parameter value from a SqlDateTime to a DateTime.

Любые идеи?

Я использую SQL Server 2008 и C# 4.0

Спасибо заранее

+0

Я думаю, вы можете использовать 'String.Empty' или' '' ', и это преобразуется в значение' NULL' 'DateTime'. – MoonKnight

+1

Вы только что пробовали передать в null 'paramter.Value = datePurchaseIssueDate.Checked? (DateTime?) DatePurchaseIssueDate.Value: null; ' –

+0

Возможно, вы захотите заменить секцию' null' на 'DbNull.Value' –

ответ

2

Да - использовать DBNull.Value в C#:

SqlParameter parameter = new SqlParameter("@piPurchase_Date", SqlDbType.DateTime); 
parameter.Value = datePurchaseIssueDate.Checked ? datePurchaseIssueDate.Value : DBNull.Value; 

передать NULL в SQL Server хранимой процедуры

+0

, это приведет к генерации ошибки. Тип условного выражения не может быть определен, потому что нет никакого неявного преобразования между 'Системой .DateTime 'и' System.DBNull ' – mko

Смежные вопросы