C# 如何比较保存在sql中的二进制(max)值,以确定它在C中是否为null?

C# 如何比较保存在sql中的二进制(max)值,以确定它在C中是否为null?,c#,sql-server,null,C#,Sql Server,Null,我正在使用以下代码以SQL varbinaryMAX数据类型保存照片: if (SPV1 == true) { imgVC1 = Image.FromFile(Open1.FileName); imgFormat1 = picVisit1.BackgroundImage.RawFormat;

我正在使用以下代码以SQL varbinaryMAX数据类型保存照片:

                    if (SPV1 == true)
                    {
                        imgVC1 = Image.FromFile(Open1.FileName);
                        imgFormat1 = picVisit1.BackgroundImage.RawFormat;
                        Ms1 = new MemoryStream();
                        imgVC1.Save(Ms1, imgFormat1);
                        byte[] ArrayV1 = Ms1.GetBuffer();

                        csCompanies.VisitCard1 = ArrayV1;
                    }
                    else                                                
                        csCompanies.VisitCard1 = null;
它在课堂上继续使用以下代码:

            if(VisitCard1==null)
                com.Parameters.AddWithValue("@VisitCard1", Convert.ToByte(VisitCard1));
            else
                com.Parameters.AddWithValue("@VisitCard1", VisitCard1);
当用户未更改默认照片时,我使用If和Else保存空值

SQL中另存为0x00的空数据

当我想显示数据时,我想知道SQL中的数据是否为Null,如果为Null,做点什么,如果不是,做点什么

但是我不能将SQL的数据与空值进行比较!当我使用

if(cscompanies.Logo1==Null)

结果始终为False[这意味着它不是Null,即使它保存为Null 0x00也不例外。不要将c Null与sql server Null混淆。它们是不同的东西

保存DBNull而不是将c null保存在数据库中。值:

if(VisitCard1==null)
    com.Parameters.Add("@VisitCard1", SqlDbType.VarBinary, -1).Value = DBNull.Value;
else
   com.Parameters.Add("@VisitCard1", SqlDbType.VarBinary, -1).Value = VisitCard1;

对于访问图像,我使用了以下计划:

课堂上:

if ((dt.Rows[0]["visitcard1"]) != DBNull.Value)
                    VisitCard1 = (byte[])dt.Rows[0]["VisitCard1"];
                else
                    VisitCard1 = null;
形式如下:

 if (csCompanies.Catalog5 != null)
                {
                    byte[] Array = csCompanies.Catalog5;
                    MS = new MemoryStream(Array);
                    picCata5.BackgroundImage = Image.FromStream(MS);
                }

我使用DBNull.value代替Null,但遇到此错误。不允许从数据类型nvarchar隐式转换为varbinarymax。请使用转换函数运行此查询。感谢您的回答。您的代码是4个良好的Null值,并解决了我的问题此部分:com.Parameters。Add@VisitCard1,SqlDbType.VarBinary,-1.Value=VisitCard1;但当我用旧代码->com.Parameters保存。AddWithValue@VisitCard2,VisitCard2;它显示无误。我再次编辑了我的答案。添加了缺少的Convert.ToByte.Im。您以前的Cod是正确的:D->com.Parameters。Add@VisitCard1,SqlDbType.VarBinary,-1.Value=VisitCard1;