[英]C# - How to pass null value if the Byte Array is not provided?
如果ImageByteArray
未提供給Parameters.Add
,我試圖將null
值傳遞給圖像數據庫字段,如下所示
cmd.Parameters.Add(new SqlParameter("@Img", SqlDbType.Image)).Value =
DBNull.Value ? null : ImageByteArray;
但我得到的錯誤是
無法將類型'System.DBNull'隱式轉換為'bool'
首先是正確的方法>
如果是,如果不提供ImageByteArray
,如何傳遞null
值?
我不知道是否正確,如果沒有提供字節數組,我想做什么Procedure or function expects parameter '@img', which was not supplied.
null傳遞給參數,所以我避免使用Procedure or function expects parameter '@img', which was not supplied.
DBNull.Value ? null : ImageByteArray;
這部分是錯誤的。 因為三元運算符需要為布爾結果進行比較。 試試下面的一個;
(object)ImageByteArray ?? DBNull.Value;
如果ImageByteArray為null,它將為您的sql參數分配DBNull.Value。
這是我正在使用的:
command.Parameters.Add("@Img", SqlDbType.VarBinary, ImageByteArray == null ? -1 :
ImageByteArray.Length).Value = ImageByteArray ?? (object)DBNull.Value;
基本上,當您將字節數組發送到數據庫時,需要指定它是否為空。 發送-1表示長度意味着接收到的數組將為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.