导航:
论坛 -> 数据库专区
斑竹:liumazi,waterstone
作者:
2018/3/27 22:56:39
标题:
请教如何读取mssql中的image字段为字符串
浏览:2626
加入我的收藏
楼主:
请教如何读取mssql中的image字段为字符串 数据库显示是这样的,我想把这个以字符串形式读取出来显示
此帖子包含附件: 大小: 8.9K
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/3/27 23:26:10
1楼:
看上去像bin
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
2018/3/28 0:15:55
2楼:
BinToHex
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/3/28 9:29:57
3楼:
好奇什么情况下需要这样的需求
----------------------------------------------
18114532@qq.com
作者:
2018/3/28 9:35:37
4楼:
var Hex: string; BufSize: Integer; Bytes: TBytes; begin Bytes := MyDataSet1.FieldByName('Photo').AsBytes; BufSize := Length(Bytes); SetLength(Hex, BufSize * 2); BinToHex(@Bytes[0], PChar(Hex), BufSize);
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
2018/3/28 9:50:21
5楼:
顶 全能。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/3/28 12:07:29
6楼:
abcjingtong (jingtong)因为这个图片字段的数据是通过网页上传的,显示是delphi程序,虽然指定了要求上传的人必须使用bmp图片,但是会出现修改了后缀的jpg图片上传上去,导致显示失败,因此显示的时候需要检查图片字段是否为bmp格式的图片
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/3/28 12:15:08
7楼:
earthsbest (全能中间件):谢谢答复 如果是D7的话, Bytes: TBytes; AsBytes 要怎么改?
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/3/28 12:24:53
8楼:
wang_80919 (Flying Wang) 谢谢
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/3/28 13:25:27
9楼:
var Hex: string; Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try TBlobField(ADOQuery1.FieldByName('Photo')).SaveToStream(Stream); BinToHex(Stream.Memory, PChar(Hex), Stream.Size); finally Stream.Free; end; end;
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
2018/3/28 14:34:53
10楼:
earthsbest (全能中间件) 在这句 TBlobField(ADOQuery1.FieldByName('Photo')).SaveToStream(Stream); 报
此帖子包含附件: 大小: 19.3K
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/3/28 15:21:38
11楼:
这种低级问题。 标准回答:找到 引发 错误的代码,设置断点,重新 DEBUG,到了断点 检查每一个对象,看看哪一个对象地址错误 或 不存在。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/3/28 15:57:45
12楼:
我猜猜,你可能没有Photo这个字段吧。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
2018/3/28 16:09:01
12楼:
References: http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/TJPEGImageAssign_(Delphi) http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Imaging.jpeg.TJPEGImage.Create http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Imaging.jpeg.TJPEGImage.Assign How to import an image to Your_Field_BLOB (BlobField) Note: Dataset in Edit/Insert mode ---- var Jpg :TJpegImage; begin try Jpg := TJpegImage.Create; MemoryStream := TMemoryStream.Create; //******* Jpg.LoadFromFile(Your_File_JPG); Jpg.SaveToStream(MemoryStream); //******* Your_Field_Blob.BlobType := ftTypedBinary; Your_Field_Blob.LoadFromStream(MemoryStream); finally // if need use "if Assigned(MemoryStream) then .... // if need use "if Assigned(Jpg) then .... MemoryStream.Free; Jpg.Free; end; ---------- Read Your_Field_BLOG with jpg image and show it in tImage component: ---- var BS:TStream; My_Imagem:TJPEGImage; begin try BS := Your_Field_BLOB.DataSet.CreateBlobStream( Your_Field_BLOB, bmRead ); /**** if (BS.Size > 0) then begin My_Imagem := TJPEGImage.Create; try My_Imagem.LoadFromStream(BS); Image1.Picture.Assign( nil ); Image1.Picture.Assign( My_Imagem ); finally My_Imagem.Free; end; end; finally // if need use "if Assigned(BS) then .... BS.Free; end; end;
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
2018/3/28 17:49:58
13楼:
earthsbest (全能中间件),字段我是替换掉了,不会一模一样复制的 with qry1 do begin s:='select A01.a0190,a01.A0101,C044.C044012 from a01,C044 where (A01.A0188=C044.A0188) ' +' and (A01.a0190 like ''%'+EMNoTxt.Text+'%'') order by A01.a0188'; Close; SQL.Add(s); open; // ShowMessage(fieldbyname('A0190').AsString); Stream := TMemoryStream.Create; try //这里报错,这个C044012就是image类型的字段 TBlobField(FieldByName('C044012')).SaveToStream(Stream); BinToHex(Stream.Memory, PChar(Hex), Stream.Size); finally Stream.Free; end; ImageTxt.Text:=Hex; end;
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/3/29 9:24:23
14楼:
是 BinToHex 报错, 前面少了这句 SetLength(Hex, Stream.Size * 2);
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
2018/3/29 9:26:16
15楼:
就算 全能 少写了代码。 也不是 楼主 推卸 责任 的 理由。 这种低级错误。楼主都解决不了,搞个屁的开发。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/4/2 21:46:34
16楼:
earthsbest (全能中间件) 好的,谢谢您的回复,试了一下,获得的是下面这样的东西 iVBORw0KGgoAAAANSUhEUgAAAeUAAABmCAIAAAB6AR73AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg AElEQVR42u2dW3MbN7LH(很多,省略) 请问是不是还需要转码什么的呀?
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/4/4 9:26:07
17楼:
看到某喷子还在喷,我就放心了,这世界还是正常的.
----------------------------------------------
作者:
2018/4/6 22:37:25
18楼:
qiuyan81 (苦恋树) 呵呵,同感,我是觉得好歹也是起个顶贴的作用,也是好的。
----------------------------------------------
只会简单使用,并未精通深入
作者:
2018/4/16 9:32:12
19楼:
不知楼主的是什么原因,我的是正常的。
此帖子包含附件: 大小: 126.7K
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw