FAZER UPDATE DA IMAGEM

BLACKVELVET 24/04/2012 12:34:08
#400644
Boas a todos os presentes:
Tenho um grande problema ao qual não consigo resolver.
Tenho, na minha aplicação, eu tenho imagens na bd,so que eu preferi converter a imagem em binario para a bd não ficar muito pesada, so que não sei como faço para ver a imagem nas respectivas picturebox.

o codigo que usei para conveter as imagens em binario e guardar na bd é este:
Dim arqImg As FileStream
Dim rImg As StreamReader
Dim arqImgem As FileStream [ô] para a foto do selo do windows
Dim oImgem As StreamReader [ô] para a foto do selo do windows


[ô]inserir imagem na bd
If Len(dlgFicheiro.FileName) <> 0 Then
arqImg = New FileStream(dlgFicheiro.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
rImg = New StreamReader(arqImg)
End If

[ô]inserir imagem na bd foto selo windows
If Len(dlgFicheiro2.FileName) <> 0 Then
arqImgem = New FileStream(dlgFicheiro2.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
oImgem = New StreamReader(arqImgem)
End If

[ô]declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva
Dim arqByteArray(arqImg.Length - 1) As Byte
arqImg.Read(arqByteArray, 0, arqImg.Length)

[ô]declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva/ foto selo windows
Dim arquivoByteArray(arqImgem.Length - 1) As Byte
arqImgem.Read(arquivoByteArray, 0, arqImgem.Length)


Agora,tenho um novo form para edição,e como a bd aceita nulos nas fotos, mais tarde se quiser inserir dá erro:

aqui deixo o codigo do update:


[ô]inserir imagem na bd
If Len(dlgFicheiro.FileName) <> 0 Then
arqImg = New FileStream(dlgFicheiro.FileName, FileMode.Open, FileAccess.Read, FileShare.Write)
rImg = New StreamReader(arqImg)
End If

[ô]inserir imagem na bd
If Len(dlgFicheiro2.FileName) <> 0 Then
arqImgem = New FileStream(dlgFicheiro2.FileName, FileMode.Open, FileAccess.Read, FileShare.Write)
oImgem = New StreamReader(arqImgem)
End If

[ô]Try
Dim myConnectionString As String = _
[Ô]Data Source=.\SQLEXPRESS; Initial Catalog=Parque; Integrated Security=SSPI;[Ô]
[ô] Comando que irá inserir dados na tabela [Ô]Parque[Ô] os campos
[ô]que são passados através de parâmetros
Dim SQL As String = [Ô]UPDATE gest_ao SET [fotoWin]=@fotoWin,[fotoOffice]=@fotoOffice, [empresa]=@empresa,[nome_rede]=@nome_rede,[utilizador]=@utilizador,[local]=@local,[departamento]=@departamento,[visivel_rede]=@visivel_rede,[sistema_operativo]=@sistema_operativo,[licenca_win]=@licenca_win,[office]=@office,[licenca_office]=@licenca_office,[numero_office]=@numero_office,[autenticacao]=@autenticacao,[office_audit]=@office_audit,[dl]=@dl,[server_cal]=@serve_cal,[ex_cal]=@ex_cal,[sql_cal]=@sql_cal,[user_baan]=@user_baan,[user_citrix]=@user_citrix,[user_internet]=@user_internet,[observacao]=@observacao WHERE IdGestao=@IdGestao [Ô]
Dim connection As New SqlConnection(myConnectionString)

[ô]declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva
Dim arqByteArray(arqImg.Length - 1) As Byte [ô]Object reference not set to an instance of an object.
arqImg.Read(arqByteArray, 0, arqImg.Length)

[ô]declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva/ fotoWin
Dim arquivoByteArray(arqImgem.Length - 1) As Byte
arqImgem.Read(arquivoByteArray, 0, arqImgem.Length)

[ô] Criação do comando indicando a instrução e a ligação
Dim command As New SqlCommand(SQL, connection)
[ô] Indicação dos parâmetros que serão inseridos
command.Parameters.Add(New SqlParameter([Ô]@empresa[Ô], cbxEmpresa.Text))
command.Parameters.Add(New SqlParameter([Ô]@nome_rede[Ô], txtNomeRede.Text))
command.Parameters.Add(New SqlParameter([Ô]@utilizador[Ô], txtUtilizador.Text))
command.Parameters.Add(New SqlParameter([Ô]@local[Ô], cbxLocal.Text))
command.Parameters.Add(New SqlParameter([Ô]@departamento[Ô], cbxDepartamento.Text))
command.Parameters.Add(New SqlParameter([Ô]@visivel_rede[Ô], cbxVisivel_Rede.SelectedIndex))
command.Parameters.Add(New SqlParameter([Ô]@sistema_operativo[Ô], txtSO.Text))
command.Parameters.Add(New SqlParameter([Ô]@licenca_win[Ô], txtSeloWindows.Text))
command.Parameters.Add(New SqlParameter([Ô]@office[Ô], txtOffice.Text))
command.Parameters.Add(New SqlParameter([Ô]@licenca_office[Ô], txtSeloOffice.Text))
command.Parameters.Add(New SqlParameter([Ô]@numero_office[Ô], txtNOffice.Text))
command.Parameters.Add(New SqlParameter([Ô]@autenticacao[Ô], cbxLegal.Text))
command.Parameters.Add(New SqlParameter([Ô]@office_audit[Ô], txtOfficeAuditoria.Text))
command.Parameters.Add(New SqlParameter([Ô]@dl[Ô], cbxDL.Text))
command.Parameters.Add(New SqlParameter([Ô]@server_cal[Ô], cbxServer.SelectedIndex))
command.Parameters.Add(New SqlParameter([Ô]@ex_cal[Ô], cbxEX.SelectedIndex))
command.Parameters.Add(New SqlParameter([Ô]@sql_cal[Ô], cbxSQL.SelectedIndex))
command.Parameters.Add(New SqlParameter([Ô]@user_baan[Ô], cbxUserBaan.Text))
command.Parameters.Add(New SqlParameter([Ô]@user_citrix[Ô], cbxUserCitrix.Text))
command.Parameters.Add(New SqlParameter([Ô]@user_internet[Ô], cbxUserInternet.Text))
command.Parameters.Add(New SqlParameter([Ô]@fotoWin[Ô], pbxSeloWindows.Image))
command.Parameters.Add(New SqlParameter([Ô]@fotoOffice[Ô], pbxSeloOffice.Image))
command.Parameters.Add(New SqlParameter([Ô]@observacao[Ô], txtObservacoes.Text))

[ô] Abre a ligação, executa o comando e guarda em [Ô]x[Ô] o número de registos inseridos
connection.Open()
Dim x As Integer = command.ExecuteNonQuery()
If x < 1 Then
End If
[ô] Fecha a ligação e limpa as variáveis
connection.Close()
connection = Nothing
command = Nothing

uma ajuda da vossa parte era muito bom,pois ja ando nisto faz dias e não passa disto.
BLACKVELVET 25/04/2012 06:11:38
#400712



Não há ninguem que me possa dar uma ajuda......

BLACKVELVET 26/04/2012 11:42:13
#400822
Bom....ja vi que não posso contar com o pessoal desta casa.....

até uma proxima....


UM ABRAÇO
ONBASS 26/04/2012 12:12:15
#400827
BLACK, eu to iniciando no .Net cara, ainda nao manjo nada.
sua duvida seria quanto a gravar a imagem no bd, como nulo?
ALEVALE 26/04/2012 12:27:00
#400829
Bom eu particurlmante não gosto de trabalhar com imagens salvas em BD.
Caso exista alguma atualização apenas sobreescrevo a imagem CTRL+C e CTRL+V...rsrsrsrs

Você precisa realmente trabalhar com imagens em um banco ?
BLACKVELVET 26/04/2012 13:17:49
#400834
Onbass:
Não é gravar como nulo. é para update.
Por vezes não há registo fotografico na hora e mais tarde é para fazer o update e por tudo como deve ser..
Tópico encerrado , respostas não são mais permitidas