IMAGEM COM MYSQL
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...
veja se esse exemplo ti ajuda amigo josec
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.
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.
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.
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.
[ô]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
[ô]-----------------------------------------------------------------------------------------------------------
[ô]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
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 ..
[ô]-----------------------------------------------------------------------------------------------------------
[ô]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 ..
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[ô];
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[ô];
eu estou gravando um caminha da imagem assim.. esta funcionando blz.
Sql = Sql & [Ô]Foto1=[ô][Ô] & Replace(Caminho_Foto1.Text, [Ô]\[Ô], [Ô]/[Ô]) & [Ô][ô],[Ô]
Sql = Sql & [Ô]Foto1=[ô][Ô] & Replace(Caminho_Foto1.Text, [Ô]\[Ô], [Ô]/[Ô]) & [Ô][ô],[Ô]
Tópico encerrado , respostas não são mais permitidas