如何比较保存在SQL中的二进制(max)值以了解它在C#中是否为空



我正在使用以下代码将照片保存在SQL(varbinary(MAX(数据类型(中:

                    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);

当用户未更改默认照片时,我使用"如果"和"否则"来保存"空"值。

在 SQL 中保存为"0x00"的空数据。

当我想要显示数据时,我想知道SQL中的数据是否为空,如果是空,则做某事,如果不是,则做某事!

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

if(cscompanies.Logo1==Null)

结果始终为 (False( [这意味着它不是 Null,即使它另存为 Null (0x00(

不要将 c# null 与 sql server null 混淆。它们是不同的东西。

不要在数据库中保存 c# null,而是保存 DBNull.Value:

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);
                }

相关内容

  • 没有找到相关文章

最新更新