IMAGEM COM MYSQL

JOSEC 29/12/2009 11:17:40
#330651
Bom Dia... Eu queria Saber como eu gravo um imagem no banco de dados mysql com adodc, e que tipo de dados se blob ou boleano, eu ja consegui colocar para captura a imagem da webcam, e que eu numca mechi com sql ai e complicado para mim, tipo no access eu consigo de boa agora quando se fala de mysql [Ô]*******[Ô] oks quem puder me ajuda obrigado.... Abraço...
JWCELYO 29/12/2009 12:18:34
#330656
veja se esse exemplo ti ajuda amigo josec
DANIKULL 29/12/2009 13:12:59
#330663
JOSEC, bom dia.

Um conselho meu, e de muitos outros é de não se gravar imagens no Banco de Dados. Você pode estar usando o MySQL agora ou estar usando o Oracle depois, isso não importa o que faz a diferença é o peso, o tamanho, que cada imagem vai dar para seu BD, isto o tornará robusto e muito grande o deixando lento e dependendo do que você faça depois pode levar horas e horas para processar uma simples consultar.
O mais correto é você colocar um campo tipo ENUM([ô]Y[ô],[ô]N[ô]) e definir um caminho padrão paras imagens. Cada imagem você renomeia ela para que tenha o código do registro no campo do tipo ENUM você diz se tem a imagem ou não, ok??

Este é meu conselho.
JWCELYO 29/12/2009 13:41:20
#330666
ops ops DANIKULL eu tenho uma base de dados online com 8 gigas de registros com imagens e nunca tive esse problema
o MySQL com SQL Server são SGDB[ô]s preparados para le dar com arquivos binários em geral.
referente a lentidão vai depende da conexão do usuário claro isso se O SGDB for usado em uma rede WAN mas caso seja usado em uma Rede LAN pouca diferença ira fazer de uma conexão local.

so para lembra que esse modo de aponta imagem para um caminho físico so funcionara em uma conexão local a não
que você fasa um unpload da imagen e salve o link na tabela da base de dados.
BARTO 29/12/2009 14:34:52
#330675
Resposta escolhida
[ô]este exemplo eu uso pra gravar a imagem no banco mysql

[ô]-----------------------------------------------------------------------------------------------------------
[ô]Grava imagem no banco de dados
[ô]-----------------------------------------------------------------------------------------------------------
Private Sub Sobe_imagem_mysql(pIdLaudo As Long, pnome_img As String)
On Error GoTo erro_mysql
Dim rs As New ADODB.Recordset
Dim mystream As ADODB.Stream
Set mystream = New ADODB.Stream
mystream.Type = adTypeBinary
cSql = [Ô]SELECT * FROM ptlaudo_img WHERE ptlaudo_idptlaudo = [Ô]
cSql = cSql & clsAll.SqlFormata(pIdLaudo, numero)
cSql = cSql & [Ô] and nome_imagem = [Ô]
cSql = cSql & clsAll.SqlFormata(pnome_img)
cSql = cSql & [Ô];[Ô]

rs.Open cSql, cnn, adOpenStatic, adLockOptimistic
If rs.EOF And rs.BOF Then
rs.AddNew
End If
[ô]Abre o gerenciado imagem
mystream.Open
[ô]le o arquivo de imagem

[ô]Redimensiona a imagem
Dim cArqOri As String
Dim cArqDes As String

cArqOri = cPathFoto & pnome_img
cArqDes = cPathFoto & [Ô]r_[Ô] & pnome_img
redimensiona_fotos cArqOri, cArqDes

mystream.LoadFromFile cArqDes
[ô]Atualiza nro do laudo
rs!ptlaudo_idptlaudo = pIdLaudo
[ô]atualiza nome da imagem
rs!nome_imagem = pnome_img
[ô]atualiza o tamanho da imagem
rs!file_size = mystream.Size
[ô]atualiza imagem no banco
rs!imagem = mystream.Read

rs.Update
mystream.Close

rs.Close
BARTO 29/12/2009 14:39:41
#330677
1este exemplo traz a imagem do banco
[ô]-----------------------------------------------------------------------------------------------------------
[ô]traz imagem do banco de dados e coloca no arquivo
[ô]-----------------------------------------------------------------------------------------------------------
Private Sub desce_imagem_mysql(pIdLaudo As Long, pnome_img As String)

On Error GoTo erro_mysql
Dim rs As New ADODB.Recordset
Dim mystream As ADODB.Stream
Set mystream = New ADODB.Stream
mystream.Type = adTypeBinary
cSql = [Ô]SELECT * FROM ptlaudo_img WHERE ptlaudo_idptlaudo = [Ô]
cSql = cSql & clsAll.SqlFormata(pIdLaudo, numero)
cSql = cSql & [Ô] and nome_imagem = [Ô]
cSql = cSql & clsAll.SqlFormata(pnome_img)
cSql = cSql & [Ô];[Ô]

Set rs = cnn.Execute(cSql)
If rs.EOF And rs.BOF Then
rs.Close
Exit Sub
End If

[ô]Verifica se existe a pasta local de fotos, senao existir cria
cArquivo = cPathFoto
If Not clsAll.IsFolderExists(cArquivo) Then
[ô] Criar Pasta
VBA.MkDir cArquivo
End If

[ô]Verifica a existencia do arquivo, se existir apaga
cArquivo = cPathFoto & pnome_img
If clsAll.FileExists(cArquivo) Then
VBA.Kill (cArquivo)
End If

[ô]Abre o gerenciado imagem
mystream.Open
mystream.Write rs!imagem
mystream.SaveToFile cPathFoto & pnome_img
mystream.Close
rs.Close
Exit Sub

erro_mysql:
MsgBox ([Ô]Erro - & [Ô] & Err.Number & [Ô] - [Ô] & Err.Description)
On Error GoTo 0
End Sub


Espero ter ajudado ..
BARTO 29/12/2009 14:50:00
#330679
abaixo segue um DDL com a definicao da minha tabela de imagens dentro do mysql
CREATE TABLE ptlaudo_img (
id_imagem int(12) NOT NULL auto_increment,
ptlaudo_idptlaudo int(12) NOT NULL,
nome_imagem varchar(150) default NULL,
imagem mediumblob NOT NULL,
file_size mediumint(8) unsigned default NULL,
PRIMARY KEY (id_imagem),
UNIQUE KEY id_imagem (id_imagem)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT=[ô]InnoDB free: 9216 kB[ô];
MOREIRA 29/12/2009 15:33:42
#330681
eu estou gravando um caminha da imagem assim.. esta funcionando blz.


Sql = Sql & [Ô]Foto1=[ô][Ô] & Replace(Caminho_Foto1.Text, [Ô]\[Ô], [Ô]/[Ô]) & [Ô][ô],[Ô]
Tópico encerrado , respostas não são mais permitidas