Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Coelhão

Update com array de byte - sql 2005

Recommended Posts

Olá pessoal, estou tentando fazer o update de uma imagem em um banco sql2005 - campo do tipo imagem.

 

Após transformá-la em array de byte preciso executar o comando, mas esta dando erro dizendo que:" operator '&' is not defined for types String and '1-dimensional array of Byte'".

 

A sub é a seguinte:

 

Public Sub Alterar()
		Dim strQuery As New StringBuilder
		strQuery.Append("UPDATE Empresa")
		strQuery.Append(" SET ")
		strQuery.Append(" Raz_Emp= '" & _Raz_Emp & " ' ")
		strQuery.Append(", Fan_Emp = '" & _Fan_Emp & " ' ")
		strQuery.Append(", Cnp_Emp = '" & _Cnp_Emp & " ' ")
		strQuery.Append(", Ine_Emp = '" & _InE_Emp & " ' ")
		strQuery.Append(", Tel_Emp = '" & _Tel_Emp & " ' ")
		strQuery.Append(", Ema_Emp = '" & _Ema_Emp & " ' ")
		strQuery.Append(", Sit_Emp = '" & _Sit_Emp & " ' ")
		strQuery.Append(", End_Emp = '" & _End_Emp & " ' ")
		strQuery.Append(", Bai_Emp = '" & _Bai_Emp & " ' ")
		strQuery.Append(", Mun_Emp = '" & _Mun_Emp & " ' ")
		strQuery.Append(", UF_Emp = '" & _UF_Emp & " ' ")
	   [b] strQuery.Append(", Logotipo = '" & _Log_Emp & " ' ")[/b][i][/i] - ** aqui qu esta dando o erro
		strQuery.Append(" WHERE ")
		strQuery.Append(" Cod_Emp= '" & _Cod_Emp & "' ")
		Dim cldBancodeDados As New CldBancodeDados()
		cldBancodeDados.ExecutaComando(strQuery.ToString)
	End Sub

Alguem sabe como poderia ser feito??

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma olhada nesses links:

http://www.macoratti.net/vb5_isql.htm

http://www.linhadecodigo.com.br/Artigo.aspx?id=337http://www.50minutos.com.br/2007/06/gravar...erver-usando-c/

 

Postei links de C# e Asp.Net mas podem ser úteis utilizando a mesma idéia.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quintelab,

 

Obrigado, revisei os links e o código esta batendo, o unico problema é na hora de fazer o update.

 

Ele diz que os caracteres & nao devem ser usados para array de byte. Será que existe outra forma de escrever o código para que ele faça o update da variável _Log_Emp

 

O código abaixo esta em uma classe chamada clnempresa que "pega" os dados do frmempresa

 

CODE
Private _Log_Emp As Byte()

Public Property Log_Emp() As Byte()

Get

Return _Log_Emp

End Get

Set(ByVal value As Byte())

_Log_Emp = value

End Set

End Property

Public Sub Alterar()

Dim strQuery As New StringBuilder

strQuery.Append("UPDATE Empresa")

strQuery.Append(" SET ")

strQuery.Append(" Raz_Emp= '" & _Raz_Emp & " ' ")

strQuery.Append(", Fan_Emp = '" & _Fan_Emp & " ' ")

strQuery.Append(", Cnp_Emp = '" & _Cnp_Emp & " ' ")

strQuery.Append(", Ine_Emp = '" & _InE_Emp & " ' ")

strQuery.Append(", Tel_Emp = '" & _Tel_Emp & " ' ")

strQuery.Append(", Ema_Emp = '" & _Ema_Emp & " ' ")

strQuery.Append(", Sit_Emp = '" & _Sit_Emp & " ' ")

strQuery.Append(", End_Emp = '" & _End_Emp & " ' ")

strQuery.Append(", Bai_Emp = '" & _Bai_Emp & " ' ")

strQuery.Append(", Mun_Emp = '" & _Mun_Emp & " ' ")

strQuery.Append(", UF_Emp = '" & _UF_Emp & " ' ")

strQuery.Append(", Logotipo = '" & _Log_Emp & " ' ")

strQuery.Append(" WHERE ")

strQuery.Append(" Cod_Emp= '" & _Cod_Emp & "' ")

Dim cldBancodeDados As New CldBancodeDados()

cldBancodeDados.ExecutaComando(strQuery.ToString)

End Sub

 

Já no frm empresa:

 

CODE
Private Sub FrmEmpresa_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim clnOcorrencias As New DLLDealer.ClnEmpresa

Dim drdados As System.Data.SqlClient.SqlDataReader

drdados = clnOcorrencias.ListarUsuarios(_Codigo)

If drdados.Read Then

Raz_EmpTextBox.Text = drdados("Raz_Emp")

Fan_EmpTextBox.Text = drdados("Fan_Emp")

Cnp_EmpTextBox.Text = drdados("Cnp_Emp")

InE_EmpTextBox.Text = drdados("Ine_Emp")

Tel_EmpTextBox.Text = drdados("Tel_Emp")

Ema_EmpTextBox.Text = drdados("Ema_Emp")

Sit_EmpTextBox.Text = drdados("Sit_Emp")

End_EmpTextBox.Text = drdados("End_Emp")

Bai_EmpTextBox.Text = drdados("Bai_Emp")

Mun_EmpTextBox.Text = drdados("Mun_Emp")

UF_EmpTextBox.Text = drdados("UF_Emp")

log = CType(drdados("Logotipo"), Byte())

Dim ms As New System.IO.MemoryStream

Dim ArraySize As Integer

ArraySize = log.GetUpperBound(0) + 1

ms = New System.IO.MemoryStream(log, 0, ArraySize)

ms.Seek(0, System.IO.SeekOrigin.Begin)

Dim img As New System.Drawing.Bitmap(ms)

PictureBoxLogo.Image = img

End If

End Sub

 

O problema é que ele está gravando dados no banco (qdo tiro os caracteres & ), só que na hora de recuperar dá erro (como se os dados que estivessem gravados não fossem de imagem). Por isso continuo achando que o problema esta na forma de escrever o update.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.