Ir para conteúdo

Arquivado

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

aluizs

REcuperar imagem do banco de dados mysql

Recommended Posts

Olá,

Uso o vs 2012 e uso o código abaixo para recuperar as imagens do bando de dados e exibir em um controle.

Entretanto os o sistema ficou muito lento para recuperar as imagens.

Gostaria de saber se há algum outro código que eu consiga fazer isto mais rápido.

RECUPERAR A IMAGEM - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Using conx As MySqlConnection = connectMsql()

sql = "select * from imagens where idpaciente like '" & paccod & "' order by id_cod desc"
Try
Dim cmd As MySqlCommand = New MySqlCommand(sql, conx)
Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
If dt.Rows.Count > 0 Then
xcontar = dt.Rows.Count - 1
Dim bits As Byte() = CType(dt.Rows(0).Item("foto"), Byte())
Dim memorybits As New MemoryStream(bits, True)
memorybits.Write(bits, 0, bits.Length)
Dim bitmap As New Bitmap(memorybits)
PictureBox1.Image = bitmap.FromStream(memorybits)
PictureBox1.Tag = dt.Rows(0).Item("id_cod")
ToolTip1.SetToolTip(PictureBox1, dt.Rows(0).Item("descricao"))
Else
xcontar = 0
End If
Catch ex As Exception
MsgBox(ex.Message)
setmousefim()
Finally
End Try
End Using
SALVAR A IMAGEM - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dim con As MySqlConnection = New MySqlConnection(sql2)
Dim cmd As MySqlCommand
Dim fs As FileStream
Dim br As BinaryReader
Try
If TextBox1.Text.Length > 0 Then
Dim NomeArquivoFoto As String = nomeArquivoImagem
Dim DadosImagem() As Byte
Dim newdate = Mid(MaskedTextBox1.Text, 7, 4) & "-" & Mid(MaskedTextBox1.Text, 4, 2) & "-" & Mid(MaskedTextBox1.Text, 1, 2)
fs = New FileStream(NomeArquivoFoto, FileMode.Open, FileAccess.Read)
br = New BinaryReader(fs)
DadosImagem = br.ReadBytes(CType(fs.Length, Integer))
br.Close()
fs.Close()
'Dim CmdSql As String = "INSERT INTO alunos(nome, email, imagem) VALUES(@Nome, @Email, @Imagem)"
sql = "INSERT INTO imagens (idpaciente, foto, datainsercao, descricao) VALUES (@idpaciente, @foto, @datainsercao, @descricao)"
cmd = New MySqlCommand(sql, con)
cmd.Parameters.Add("@idpaciente", MySqlDbType.VarChar, 11)
cmd.Parameters.Add("@foto", MySqlDbType.Blob)
cmd.Parameters.Add("@datainsercao", MySqlDbType.Date)
cmd.Parameters.Add("@descricao", MySqlDbType.VarChar, 255)
cmd.Parameters("@idpaciente").Value = TextBox1.Text
cmd.Parameters("@foto").Value = DadosImagem
cmd.Parameters("@datainsercao").Value = newdate
cmd.Parameters("@descricao").Value = TextBox3.Text
con.Open()
Dim linhasAfetadas As Integer = cmd.ExecuteNonQuery()
If (linhasAfetadas > 0) Then
MessageBox.Show("A imagem foi salva com sucesso !", "Salvar Imagem", MessageBoxButtons.OK, MessageBoxIcon.Information)
frmconsulta.callfoto()
End If
Else
MessageBox.Show("Dados incompletos !", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MsgBox(ex.ToString())
Finally
If con.State = ConnectionState.Open Then
con.Close()
End If
End Try

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso vai variar muito da estrutura do seu banco de dados... Quanto mais dados tiver, mais demorada vai ser a consulta, voce teria que colocar chaves e indices para deixar mais rápido, vou mover isso para a área de banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso vai variar muito da estrutura do seu banco de dados... Quanto mais dados tiver, mais demorada vai ser a consulta, voce teria que colocar chaves e indices para deixar mais rápido, vou mover isso para a área de banco de dados.

Ok.

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.