none
Button.backgroundImage a Picturebox si pasa pero no la guarda en BD RRS feed

  • Pregunta

  • Uso backgroundImage de un boton para pasar la imagen a un PictureBox y si se copia bien, pero al guardar la imagen del picturebox a BD en sql no graba nada, que estara pasando?

    Luis C


    • Cambiado EricRR sábado, 6 de marzo de 2021 0:03 SQL
    • Editado Luis Carlos H sábado, 6 de marzo de 2021 0:05
    viernes, 5 de marzo de 2021 23:09

Respuestas

  • En principio tiene buen aspecto. La única pega que veo es que estás asignando la propiedad SqlValue del SqlParameter. Si no me equivoco, tendrías que usar .Value en lugar de .SqlValue, ya que estás pasando como valor el resultado de GetBuffer, que directamente te da el array de bytes que hay que pasar, no te da un SQL Type.
    • Marcado como respuesta Luis Carlos H domingo, 7 de marzo de 2021 16:18
    domingo, 7 de marzo de 2021 9:24

Todas las respuestas

  • El picturebox por sí solo no tiene la capacidad de guardar la imagen en base de datos. Tienes que haber escrito algo de código que tome la imagen del picturebox y la envíe a la base de datos. Si no se está grabando, cabe presumir que existe algún error dentro de esa parte del código. Si nos muestras cómo lo estás haciendo, podemos revisarlo a ver si encontramos cuál es el error.
    sábado, 6 de marzo de 2021 8:19
  •  Public Sub store_pic_Sql(ByVal img As Image, strField As String, ID As Int32)
            Try

                Dim conn As SqlConnection = New SqlConnection()
                conn.ConnectionString = GlobalVariables.cString


                Dim sql As String = "UPDATE TBLCUSTIDS SET " & strField & "= @imgData WHERE ID=" & ID
                Dim command1 As SqlCommand = New SqlCommand(sql, conn)
                Dim sqlpara As New SqlParameter("@imgData", SqlDbType.Image)

                Dim mStream As MemoryStream = New MemoryStream()
                img.Save(mStream, ImageFormat.Jpeg)
                sqlpara.SqlValue = mStream.GetBuffer

                command1.Parameters.Add(sqlpara)
                conn.Open()
                command1.ExecuteNonQuery()
                conn.Close()
            Catch ex As Exception
                MsgBox(ex.ToString, MsgBoxStyle.Information)
            End Try
        End Sub

    Luis C

    sábado, 6 de marzo de 2021 23:31
  • En principio tiene buen aspecto. La única pega que veo es que estás asignando la propiedad SqlValue del SqlParameter. Si no me equivoco, tendrías que usar .Value en lugar de .SqlValue, ya que estás pasando como valor el resultado de GetBuffer, que directamente te da el array de bytes que hay que pasar, no te da un SQL Type.
    • Marcado como respuesta Luis Carlos H domingo, 7 de marzo de 2021 16:18
    domingo, 7 de marzo de 2021 9:24