Jump to content

Recommended Posts

Posted

Boas pessoal:

Tenho um pequeno bug na minha aplicação que não percebo....

Eu quero apagar uma imagem da picturebox que está tambem guardada na bd. A imagem está convertida em binario.

Acontece que, quando quero apagar SÓ a imagem,apaga-me o registo todo.

Dim myConnectionString As String = _
			  "Data Source=.\SQLEXPRESS; Initial Catalog=Parque; Integrated Security=SSPI;"
    Dim SQL As String = "DELETE  from gest_ao WHERE fotoWin=@fotoWin"
    Dim Windows() As Byte
    If pbxSeloWindows.Image IsNot Nothing Then
	    Using M As New IO.MemoryStream
		    pbxSeloWindows.Image.Save(M, Drawing.Imaging.ImageFormat.Jpeg)
		    Windows = M.ToArray()
	    End Using
    End If
    Dim connection As New SqlConnection(myConnectionString)
    Dim command As New SqlCommand(SQL, connection)
    Dim DataAdapter As New SqlDataAdapter(command)
    command.Parameters.Add("@fotoWin", SqlDbType.VarBinary).Value = If(Windows Is Nothing, DBNull.Value, Windows)
    connection.Open()
    Dim MyData As New DataTable
    DataAdapter.Fill(MyData)
    If MyData.Rows(0)(22) IsNot DBNull.Value Then
	    Dim W As IO.MemoryStream = New IO.MemoryStream(CType(MyData.Rows(0)(22), Byte()))
	    pbxSeloWindows.Image = Image.FromStream(W)
    End If
    connection.Close()
    connection = Nothing
    command = Nothing

Podem-me dar uma ajuda?

Cumprimentos

Posted (edited)

Para apagar só da PictureBox e não do registo, e se estou a perceber aquilo que pretendes, é simples:

PictureBox1.Image = Nothing

Agora posso é não estar a entender exactamente o que pretendes... :/

Edited by thoga31

Knowledge is free!

Posted (edited)

Para apagar só um campo, faz o update a esse registo e coloca esse campo a NULL

Edited by Caça

Pedro Martins

Não respondo a duvidas por PM

Posted

Boas,

Estás a dizer que não preciso do codigo todo? ( aquele que acabei de postar,acima)

É assim, eu seleciono uma linha da tabela para edição, clico no botao eliminar foto e quero apagar a foto da picturebox e da base de dados.

E depois gravar a alteração.

Só isso.

Posted

Para apagar a imagem

UPDATE gest_ao SET fotoWin = NULL WHERE ID = @ID

Não podes ou não deves apagar por imagem, uma vez que podes ter mais do que um registo com a mesma imagem e caso isso aconteça da forma que tens apaga-os..

Pedro Martins

Não respondo a duvidas por PM

Posted

Não podes ou não deves apagar por imagem, uma vez que podes ter mais do que um registo com a mesma imagem e caso isso aconteça da forma que tens apaga-os..

Não há problemas porque um id vai ter imagens diferentes e em campos separados dai poder excluir sem problemas,mesmo que haja imagens iguais.

Ja testei com varias imagens iguais em id's diferentes e não apaga as outras.

Obrigado pela ajuda.

Um abraço a todos

Posted

Também recomendaria estudar formas alternativas de se fazer este armazenamento. Existe uma regra de boas práticas com relação a banco de dados que se deve evitar guardar imagens neles. O que geralmente se faz é guardar somente o endereço/link para a imagem, mas a imagem em si, fica fora do banco de dados, no sistema de arquivo.

Fernando Lage Bastos - MCP/MCTS/MCPD

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.