簡體   English   中英

C#-如果未提供字節數組,如何傳遞空值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM