Flower@12 Ответов: 2

Как передать нулевое значение для изображения в таблицу SQL


Я хочу передать нулевое значение или пустые байты для поля изображения в sql

Что я уже пробовал:

Мой код находится ниже
If Not pic Is Nothing Then
              imageConverter = New ImageConverter()
              imageByte = DirectCast(imageConverter.ConvertTo(pic, GetType(Byte())), Byte())
              objCmd.Parameters.AddWithValue("@EmpPhoto", imageByte)
          Else
              objCmd.Parameters.AddWithValue("@EmpPhoto", DBNull.Value)
          End If

Он показывает ошибку
Тип операнда несовместим с образом

2 Ответов

Рейтинг:
14

OriginalGriff

Попробуй:

objCmd.Parameters.AddWithValue("@EmpPhoto", SqlDbType.Image).Value = DBNull.Value

Интересный. Это не работает...и это тоже:
try
    {
    using (SqlConnection con = new SqlConnection(strConnect))
        {
        con.Open();
        using (SqlCommand cmd = new SqlCommand("INSERT INTO Table_4 (Photo) VALUES (@P)", con))
            {
            cmd.Parameters.AddWithValue("@P", SqlDbType.Image).Value = DBNull.Value;
            int result = cmd.ExecuteNonQuery();
            }
        }
    }
catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }

Но это действительно так:
try
    {
    using (SqlConnection con = new SqlConnection(strConnect))
        {
        con.Open();
        using (SqlCommand cmd = new SqlCommand("INSERT INTO Table_4 (Photo) VALUES (@P)", con))
            {
            SqlParameter ip = new SqlParameter("@P", SqlDbType.Image);
            ip.Value = DBNull.Value;
            cmd.Parameters.Add(ip);
            int result = cmd.ExecuteNonQuery();
            }
        }
    }
catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }


Так... в VB:
Try

    Using con As SqlConnection = New SqlConnection(strConnect)
        con.Open()

        Using cmd As SqlCommand = New SqlCommand("INSERT INTO Table_4 (Photo) VALUES (@P)", con)
            Dim ip As SqlParameter = New SqlParameter("@P", SqlDbType.Image)
            ip.Value = DBNull.Value
            cmd.Parameters.Add(ip)
            Dim result As Integer = cmd.ExecuteNonQuery()
        End Using
    End Using

Catch ex As Exception
    Console.WriteLine(ex.Message)
End Try


[no name]

Как передать пустой байт в vb

OriginalGriff

Интересно - смотрите обновленное решение.

[no name]

Большое вам спасибо сэр Vb.net кодирование теперь работает

OriginalGriff

Всегда пожалуйста!
Я записал это как совет для потомков:
https://www.codeproject.com/Tips/1260972/Passing-DbNull-Value-to-an-SQL-Image-column

[no name]

Я уже ссылался на это решение в проекте кода но в тот раз я допустил какую то ошибку но так что теперь оно не работает оно работает нормально

Richard Deeming

.AddWithValue("@P", SqlDbType.Image)

Второй параметр к AddWithValue это значение параметра, а не тип параметра. :)

Рейтинг:
0

Mansoor Anwar

Very Simple Solution


C# Text

query = "insert into Customer (CustomerCode,LdegerCode,CustomerPicture) values ('0001','9999',NULL)"



Sql query Text

insert into Customer (CustomerCode,LdegerCode,CustomerPicture) values ('0001','9999',NULL)


Richard Deeming

Итак, ваше "решение" этого уже решенного вопроса состоит в том, чтобы ввести SQL-инъекция[^] уязвимость, которой не было в исходном коде?

Очень плохая идея.