2011-01-10 50 views
0

使用Visual Studio 2010我正在組合一個需要記錄一些數據的快速.NET應用程序。我正在使用SQL Server Express的內置工具,併爲數據插入創建了存儲過程。我已經設置了數據庫表,以允許有問題的字段爲空,但是生成了一個運行時異常「程序或函數'XYZ'需要參數'@ErrorCode',它沒有提供。」SQL Server Express ...存儲過程「空參數」錯誤

我曾嘗試創建SqlParameters的「普通道路」:

command.Parameters.Add(new SqlParameter("ErrorCode", state.ErrorCode)); 

我也試圖通過設置更多的屬性創建它們:狀態對象

SqlParameter errorCodeParam = new SqlParameter("ErrorCode", SqlDbType.Int); 
errorCodeParam.IsNullable = true; 
errorCodeParam.Value = state.ErrorCode; 
command.Parameters.Add(errorCodeParam); 

我ErrorCode屬性只是一個可空的int ...「int?」分配值爲「null」。由於該字段的表格列可能允許空值,所以我對它抱怨的原因有點遺憾。

想法或想法?謝謝。

+0

在你的程序中有你聲明如下 @MyParam MyDataType空 空的參數是不是你要聲明這種方式的過程隱含的。 – u07ch 2011-01-10 08:29:39

回答

1

經過一些額外的實驗後,我找到了答案(我認爲我會通過它,以防其他人遇到相同的情況)。我一直在使用之類的語句如下:(?INT)

command.Parameters.Add(new SqlParameter("ErrorCode", (state.ErrorCode != null ? state.ErrorCode : null))); 

藉助於此,我檢查爲空的整型值,看看是否有一個值,如果沒有,分配一個C#空到的SqlParameter .. .. 它想要一個DBNull.Value而不是