我正在使用以下代码将照片保存在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);
}