Ir para conteúdo

Arquivado

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

Alexandre Carmo

Transferir dados

Recommended Posts

Boa tarde

 

Pessoal desenvolvi uma aplicação wm vb.net desktop com SQLServer 2008, nom eu banco de dados SQLServer tenho uma tabela onde um dos campos é do tipo varbinary. Eu tenho um banco mysql onde um dos campos também é varbinary e preciso passar os dados do SQLServer do campo varbinary para o campo varbinary no mysql, mas não estou conseguindo, alguem saberia como fazer isso? Os demais tipos de campo consegui tranquilo mas esse não estou conseguindo.

Segue meu código

Dim ds As New DataSet()
   ds = NegociosEnrollMorador.VerificaBiometriaSincrinismo

If ds.Tables(0).Rows.Count > 0 Then
     For Each registro In ds.Tables(0).Rows
       MessageBox.Show(registro("template").ToString)
       NegociosEnrollMorador.CadastroBiometriaOnline(registro("id").ToString, registro("cartao").ToString, registro("template"))
     Next
   End If
Aqui esta a class NegociosEnrollMorador:

Imports MySql.Data.MySqlClient
Imports System.Data.SqlClient
Public Class NegociosEnrollMorador
Public Shared Function VerificaBiometriaSincrinismo() As DataSet
   Dim ds As New DataSet()
   Dim da As New SqlDataAdapter()

   'Criar o objeto do tipo SQLParameterCollection do tipo SQLCommand
   Dim parametros As SqlParameterCollection = New SqlCommand().Parameters

   Try
     parametros.AddWithValue("@sincronizado", "nao")

     Dim sql As String = "select ID, cartao, template from enroll_morador where sincronizado=@sincronizado"
     'Passar parametros
     da = ManipulaDAOLocal.SelecionaDadosLocal(sql, parametros)
     da.Fill(ds)
   Catch ex As Exception
     MessageBox.Show("Erro ao sincronizar enroll de moradores! Entre em contato com o suporte")
   End Try
   Return ds

 End Function

Public Shared Sub CadastroBiometriaOnline(ByVal id As String, ByVal cartao As String, ByVal template As Byte)
   Dim parametros As MySqlParameterCollection = New MySqlCommand().Parameters
   parametros.AddWithValue("?cartao", cartao.ToString)
   parametros.AddWithValue("?template", template)
   parametros.AddWithValue("?id", id.ToString)

   Try
     Dim sql As String = "insert into enroll_morador(cartao,template,id_local)values(?cartao,?template,?id)"
     'Passar parametros
     ManipulaDALOnline.ManipulaDados(sql, parametros)
     'MarcaSincronizacaoCadastroFuncionarioHoraFixa(idLocal)
   Catch ex As Exception
     MessageBox.Show("Erro ao sincronizar biometria morador online! Entre em contato com o suporte")
   End Try

 End Sub

End Class

é dessa forma que estou armazenando, se vocÊ notarem coloquei um MessageBox no primeiro bloco de código para mostrar o valor dos dados do campo varbinary e ele mostra o System.Byte[] e armazena, os demais campos armazenam perfeitamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

dei uma pesquisada achei a limitação do sqlserver que você pode colocar até 8000 bytes, e caso você coloque varbinary(max) você pode armazenar até 2^31-1 que seria algo acima de 1bilhão

 

isso em : http://msdn.microsoft.com/en-us/library/ms188362.aspx

 

não achei a mesma informação para o caso do varbinary,

 

isso em : http://dev.mysql.com/doc/refman/5.0/en/binary-varbinary.html

 

achei essa dica, não sei se ela é aplicável para você

 

isso em : http://social.msdn.microsoft.com/Forums/pt/aspnetpt/thread/777f8292-152b-461f-b4e0-a1150be41f72

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia

 

Cara valeu por essa explicação, e os links, eu tinha mesmo essa dúvida devido o uso do MAX.

Porém o que eu não consigo fazer mesmo é pegar os dados do campo sqlserver do tipo varbinary e armazenar no mysql em um campo varbinary usando o vb.net para isso. Você tem alguma idéia de como fazer isso?

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.