用Query可以保存图片,而改用AdoQuery为什么不可以啊????

xinghuowu 2005-08-22 05:11:45
我用Query可以保存图片并可用DBImage显示,但换成ADOQuery后则可以保存,但不能显示,程序没变,只是将Query换成ADOQuery,
pic1 := TPicture.Create;
pic1.LoadFromFile(opendialog.FileName);
ADOQuery1.Insert;
ADOQuery1.FieldByName('xh').AsString := '1';//序号
ADOQuery1.FieldByName('tp').Assign(pic1);//图片
ADOQuery1.Post;
...全文
223 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chb5210 2006-03-04
  • 打赏
  • 举报
回复
uese jpeg;


procedure TForm1.Button1Click(Sender: TObject); // 插入图片过程
var
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create; // 创建内存流
Image1.Picture.Graphic.SaveToStream(testStream); // 将图片保存到内存流中
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into tbltemp (Image) values (:photo)'); // 进行插入操作
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); // 读取保存的内存图
adoquery1.ExecSQL;
finally
testStream.Free; // 释放内存流
end;
end;


试试这个,我的数据库里字段Image的类型为image
net_morning 2006-03-04
  • 打赏
  • 举报
回复
学习~
jixinming 2006-03-03
  • 打赏
  • 举报
回复
xinghuowu 2005-08-26
  • 打赏
  • 举报
回复
诶,真的不行诶,我再想想其他的办法吧
wudi_1982 2005-08-23
  • 打赏
  • 举报
回复
function TfrmSbManager.InsertSbTb: Boolean;
var
sqltext : string;
begin
//添加设备
sqltext := '';
Memo1.Lines.SaveToFile('c:\tempMemo.txt');
with dtmd.qyinsertsb do
begin
Close;
SQL.Clear;

if PicterFilename <> '' then
begin
SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz,tp)');
SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz,:#tp)');
end else begin
SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz)');
//
SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz)');
//
end;
Parameters.ParamByName('#sbid').Value := Trim(edSbid.Text);
Parameters.ParamByName('#sbname').Value := Trim(edSbname.Text);
Parameters.ParamByName('#gmdate').Value := FormatDateTime('yyyy-mm-dd',dtpkGmrq.Date);
Parameters.ParamByName('#dj').Value := StrToFloat(edDj.Text);
Parameters.ParamByName('#sl').Value := StrToFloat(EdSl.Text);
Parameters.ParamByName('#fpsl').Value := 0;
Parameters.ParamByName('#cjname').Value := Trim(edCj.Text);
Parameters.ParamByName('#cfdb').Value := Trim(edDb.Text);
Parameters.ParamByName('#tel').Value := Trim(edTel.Text);
// Parameters.ParamByName('#memo').DataType := ftMemo;
Parameters.ParamByName('#bz').Value := Memo1.Text;
if PicterFilename <> '' then
Parameters.ParamByName('#tp').LoadFromFile(PicterFilename,ftBlob);//就这里
try
ExecSQL;
Result := true;
except
Result := false;
end;

end;
end;
在D7下,WINXP测试通过,
konhon 2005-08-23
  • 打赏
  • 举报
回复
诶,不行啊!谁还有好办法啊

怎么不行呀, 我的代码我一直都在用呀.

支持Jpg, 需要多加一個引用單元
uses jpeg;


ADOQuery1.Insert;
ADOQuery1.FieldByName('xh').AsString := '1'; //序?
TBlobField(ADOQuery1.FieldByName('tp')).LoadFromFile(opendialog.FileName);
ADOQuery1.Post;
gxgyj 2005-08-23
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3697/3697056.xml?temp=.3512995
xinghuowu 2005-08-23
  • 打赏
  • 举报
回复
诶,不行啊!谁还有好办法啊
cdsgajxlp 2005-08-22
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
fileStr : TfileStream;
st1 : Tstringstream;
begin
if OpenPictureDialog1.Execute then
begin
try
st1:=Tstringstream.Create('');
fileStr:= TfileStream.Create(OpenPictureDialog1.FileName,fmOpenRead);
st1.CopyFrom(filestr,filestr.Size);
qryMaster.Edit;
TBlobField(qryMaster.FieldByName('Pic2') as TBlobField).LoadFromStream(st1);
finally
freeandnil(fileStr);
freeandnil(st1);
end;
end;
end;
konhon 2005-08-22
  • 打赏
  • 举报
回复
支持Jpg, 需要多加一個引用單元
uses jpeg;
xinghuowu 2005-08-22
  • 打赏
  • 举报
回复
我试过了,但是报错:bitmap image is not valid!程序里不仅仅要支持bitmap的还要支持其他的,如jpg等
winxkm 2005-08-22
  • 打赏
  • 举报
回复
konhon(优华) 正解
zsjzwj 2005-08-22
  • 打赏
  • 举报
回复
优华的正确
hqhhh 2005-08-22
  • 打赏
  • 举报
回复
我以前搞的好像也不行,但改为下面的就可以!
请参考:
if OpenPictureDialog1.Execute then
begin
if not (DBImage1.DataSource.DataSet.State in [dsEdit,dsInsert]) then
DBImage1.DataSource.DataSet.Edit;

DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
DBImage1.CopyToClipboard;
DBImage1.PasteFromClipboard;
end;
konhon 2005-08-22
  • 打赏
  • 举报
回复
ADOQuery1.Insert;
ADOQuery1.FieldByName('xh').AsString := '1'; //序?
TBlobField(ADOQuery1.FieldByName('tp')).LoadFromFile(opendialog.FileName);
ADOQuery1.Post;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧