C# 如何比较保存在sql中的二进制(max)值,以确定它在C中是否为null?
我正在使用以下代码以SQL varbinaryMAX数据类型保存照片: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;
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;