2017-02-11 9 views
0

Я спасаю фото в SQL (VARBINARY (MAX) Тип данных) с этим кодом:как сравнить двоичное (максимальное) значение, сохраненное в sql, чтобы знать, является ли оно нулевым, в C#?

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

I Used "Если" и " Else "для сохранения значения« Null », когда пользователь не изменил фотографию по умолчанию.

Null Данные, сохраненные как «0x00» в SQL.

Когда я хочу показать данные, я хочу знать, что данные в SQL являются Null или нет, если Null, что-то делать, а если нет, сделайте что-нибудь!

Но я не могу сравнить данные SQL с нулевым значением! и когда я использую

if(cscompanies.Logo1==Null) 

результат всегда (False) [это значит его не Null, даже если он Сохраненный в Null (0x00)

ответ

1

Не путайте C# нуль с SQL сервером нуль. Это разные вещи.

Вместо сохранения C# нуль в базе данных, за исключением 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; 
+0

Я использовал (DBNull.va lue) insted (Null), но я встречаю эту ошибку ((Неявное преобразование из типа данных nvarchar в varbinary (max) недопустимо. Используйте функцию CONVERT для запуска этого запроса.)) –

+0

Спасибо 4 Ur Answer. Ur код был хорош 4 Null Value и решил мою проблему <3 Но когда я использовал Ur code 4 save Photo, когда мне захотелось показать, я встречаю эту ошибку ((Buffer не может быть null.)) ........ Разве я понял? : D –

+0

Эта часть: com.Parameters.Add ("@ VisitCard1", SqlDbType.VarBinary, -1) .Value = VisitCard1; но когда я сохранил свой старый код -> ((com.Parameters.AddWithValue («@ VisitCard2», VisitCard2);)) это было показано без ошибки –

0

для посещения изображения я использовал этот план:

в классе:

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