biakeffer Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 tipo... to com uma dúvida ao gravar imagem no banco de dados uso delphi e bd mysqlestou fazendo da seguinte maneira...no botão pra procurar a foto coloqueiif OpenPictureDialog1.Execute thenFOTO.Picture.LoadFromFile(OpenPictureDialog1.FileName);até aqui tudo bem, agora como faço pra gravar no banco qual o código coloco no botão de gravartentei colocar assim mas não deu certo: DataModule1.Table1.FieldByName('foto').Assign(FOTO.Picture);me ajudem por favor!!!!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 to com uma dúvida ao gravar imagem no banco de dados uso delphi e bd mysqlprocure por Dicas [ Imagens no MySQL . Função AddSlashes ] Um dos grandes problemas de se trabalhar armazenando imagens em campos blobs no MySQL é ler estes campos posteriormente para gravar esta imagem em um arquivo (bmp, jpg, gif, etc).... http://www.activedelphi.com.br/lista_topic...1&tópico=48abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 (editado) estou fazendo da seguinte maneira...no botão pra procurar a foto coloqueiif OpenPictureDialog1.Execute then FOTO.Picture.LoadFromFile(OpenPictureDialog1.FileName); até aqui tudo bem, agora como faço pra gravar no banco qual o código coloco no botão de gravar tentei colocar assim mas não deu certo: DataModule1.Table1.FieldByName('foto').Assign(FOTO.Picture);biakeffer, se esta foto diz respeito ao registro correntemente em inserção/edição você poderia substituir o seu TImage (FOTO) por um TDBImage. Nele, configure as propriedades DataSource e DataField de acordo com o que você tem no datamodule. Como resultado, este componente sempre mostrará a foto gravada no banco para o registro atual. Mas se for para manter com um TImage, a saída talvez seja algo assim: var MS :TMemoryStream; begin ... if OpenPictureDialog1.Execute then begin FOTO.Picture.LoadFromFile(OpenPictureDialog1.FileName); MS := TMemoryStream.Create; try FOTO.Picture.Graphic.SaveToStream(MS); (DataModule1.Table1.FieldByName('foto') as TBlobField).LoadFromStream(MS); finally MS.Free; end; end; end;note que seu campo de imagem deverá ser do tipo BLOB (TBlobField).Conforme o tamanho da imagem que você pretenda armazenar, pode ser útil avaliar o tipo de campo BLOB a utilizar - postSe precisar converter as imagens para JPG (caso não sejam), tem uma função que postei há algum tempo - post. Editado Fevereiro 8, 2008 por Micheus Adicionado MS.Free Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 biakeffer Postado Fevereiro 8, 2008 Autor Denunciar Share Postado Fevereiro 8, 2008 (editado) Micheus...tentei fazer das duas formas com o timage e dbimage mas fazendo dessa forma deu o seguinte erro (stream write error)... Editado Fevereiro 8, 2008 por Micheus Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 biakeffer Postado Fevereiro 8, 2008 Autor Denunciar Share Postado Fevereiro 8, 2008 oi Jhonas...dei uma olhada no que me passou, mas não consegui entender muito bem... tipo onde tenho que colocar essa função, onde chamar e tals...pode me dar uma mãozinha...é que to perdidinha mesmo quanto esse assunto de imagens no banco Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 9, 2008 Denunciar Share Postado Fevereiro 9, 2008 procure por Dicas [ Imagens no MySQL . Função AddSlashes ] foi mal, não é para delphi..........................................................note que seu campo de imagem deverá ser do tipo BLOB (TBlobField).aproveitando o que o Micheus já te respondeu, vamos supor que o campo definido na sua tabela seja do tipo TBlob e este linkado ao componente TDBImage, então podemos fazer o seguinte teste:// Para salvar a imagem DataModule1.Table1.Edit; DataModule1.Table1.FieldByName('foto').LoadfromFile('C:\Imagem.jpg'); // o nome foto é minusculo ? DataModule1.Table1.Post;OBS: o codigo que o Micheus postou para voce tambem funciona... abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 biakeffer Postado Fevereiro 9, 2008 Autor Denunciar Share Postado Fevereiro 9, 2008 oi pessoas...seguinte, como eu não consegui resolver meu problema optei por gravar apenas o caminho da imagem, mas dai surgiu outro problema...no mysql não da pra gravar \ (barra invertida), eu consegui gravar o caminho porém fica da seguinte maneira... C:imagem.jpg sendo que deveria ficar C:\imagem.jpg...alguém ai pode me ajudar a resolver esse probleminha??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 10, 2008 Denunciar Share Postado Fevereiro 10, 2008 Citar surgiu outro problema...no mysql não da pra gravar \ (barra invertida) você pode criar uma rotina para trocar esta barra por branco ou outro caracter e armazenar no banco, e quando você for utilizar trocar o branco por barra novamente. exemplo: procedure TForm1.Button1Click(Sender: TObject); var path : string; begin path:= 'c:/imagens/jpg/teste.jpg'; while Pos('/', path) > 0 do path[Pos('/', path)] := ' '; edit1.text := path; // o resultado será 'c: imagens jpg teste.jpg' while Pos(' ', path) > 0 do path[Pos(' ', path)] := '/'; edit2.text := path; // o resultado será 'c:/imagens/jpg/teste.jpg' end; abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 biakeffer Postado Fevereiro 12, 2008 Autor Denunciar Share Postado Fevereiro 12, 2008 Graças a Deus! funcionou....brigadão mesmo pessual....bjim Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 12, 2008 Denunciar Share Postado Fevereiro 12, 2008 oi pessoas...seguinte, como eu não consegui resolver meu problema optei por gravar apenas o caminho da imagem, mas dai surgiu outro problema...no mysql não da pra gravar \ (barra invertida), eu consegui gravar o caminho porém fica da seguinte maneira... C:imagem.jpg sendo que deveria ficar C:\imagem.jpg...alguém ai pode me ajudar a resolver esse probleminha???MySQL foi escrito em C em ambiente originalmente Linux/Unix . Então segue as regras para caracteres especiais. Onde se quer usar \ deve-se usar \\. Simples Assim. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Fevereiro 12, 2008 Denunciar Share Postado Fevereiro 12, 2008 Onde se quer usar \ deve-se usar \\. Simples Assim.Simples mas bem sacana.Por que é que os dados que são armazenados no banco, teriam alguma relação com a sintaxe da linguagem utilizada para criar ele? :wacko: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 12, 2008 Denunciar Share Postado Fevereiro 12, 2008 Onde se quer usar \ deve-se usar \\. Simples Assim.Simples mas bem sacana.Por que é que os dados que são armazenados no banco, teriam alguma relação com a sintaxe da linguagem utilizada para criar ele? :wacko:Lembre-se que a linguagem SQL é interpretada. :blush:Manual do MySQL Versão 4.1 2.6.1.3. MySQL para Windows Comparado com o MySQL paraUnixO caracter de diretório ‘\’Componentes de nomes de caminho no Win95 são separados pelo caracter ‘\’ o qual também éo caractere de escape no MySQL. Se você estiver usando LOAD DATA INFILE ou SELECT... INTO OUTFILE, use nomes de arquivo no estilo Unix com caracteres ‘/’:mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;Uma alternativa é dobrar o caracter ‘/’:mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr; Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
biakeffer
tipo... to com uma dúvida ao gravar imagem no banco de dados uso delphi e bd mysql
estou fazendo da seguinte maneira...
no botão pra procurar a foto coloquei
if OpenPictureDialog1.Execute then
FOTO.Picture.LoadFromFile(OpenPictureDialog1.FileName);
até aqui tudo bem, agora como faço pra gravar no banco qual o código coloco no botão de gravar
tentei colocar assim mas não deu certo:
DataModule1.Table1.FieldByName('foto').Assign(FOTO.Picture);
me ajudem por favor!!!!!!!
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.