300分,delphi7+oracle+odbc+adoquery,在delphi7中将图片寸到oracle的blob字段中去(300分)

  • 主题发起人 主题发起人 sy.zhuang
  • 开始时间 开始时间
S

sy.zhuang

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi7+oracle+odbc+adoquery环境下,想把bmp文件存取在oracle的blob字段中,但是无法实现。
表结构如下:
表名:test
ID: VARCHAR(10);主键
PICTURE:BLOB

我设完adoquery的connectString后,设SQL语句属性时为:select id,picture from test
此时,当想把adoquery的active的属性由false设为true时,出现一个错误,
错误显示为:unsupported netword datatype or representation.(使用adotable也不行。)
但是,我设sql为:select id from test时,就可以打开adoquery。

可是,如果使用access数据库的话,就可以打开,我想请问各位,这时怎么一回事,很急,望那位大侠帮忙一下。在线等待......
之后,就是把image上的图片存到oracle的blob字段去,代码如下:
If OpenDialog1.Execute then // 打开文件对话框
 begin
   Image1.Picture.Bitmap.SaveToFile(OpenDialog1.FileName); //将图像数据写入磁盘临时文件中
   ADOQuery1.Edit; // 写BLOB字段之前使ADOTable1处于编辑状态。
   ADOQuery1.Append; // 添加一个空记录
   // 加载磁盘临时文件至BLOB字段
   TBlobField(ADOQuery1.FieldbyName('PICTURE')).LoadFromFile(OpenDialog1.FileName);
   ADOQuery1.Post; // 将修改数据写入数据库
   ADOQuery1.Refresh; // 使ADOQuery1对象与数据库同步
   DeleteFile(‘d:/temp.bmp’); // 删除临时文件
  end;
以上代码我在delphi+ado+odbc+access 下都没问题,就是在oracle中有问题。。
我在网上有看到delphi存取oracle的blob字段的文章,但是,都没有提到我以上的问题.......
 
怎么没人回答呢,急呢。 .....
 
我曾经试过一种方法,你可以试试用TStringStream + Table
table.Append;
//Here Please Evaluate Other Fields;
FieldByName('Your PictureField').AsString := StringStream.StrintData;
table.post;
StringStream的数据来源于你的图片文件
StringStream.LoadFromFile('Your PictureFile Name');
 
首先建议使用odac控件操作oracle数据库,另外,就是使用流的方法存入数据库,我有篇笔记是写sql server 2k数据库的,可以参考
 
我会依照KylixLinux的方法试一下, 但是, 能否有人告诉我,adoquery 下如何解决呢?
 
oracle和sqlserver 的存图不一样吗?得学习了
 
很老的帖子了,到现在我还是没有分配分数,很无奈,但是,问题确实是还没有得到解决。

所以,我还想等等,请大家别生气。
这个问题,我暂时用另外一个办法解决了,就是,我换了开发工具,
delphi=》powerbuilder。多无奈啊,,!!!!
 
oracle中存储图片,字段一般设置伟long raw类型 比较好
 
delphi中不能做吗?
我的2004年的系统都是Oracle和delphi图形处也有很多,没有任何不能的问题啊。
关键是你的问题是什么?
 
我正好昨天也在做这个,开始用的也是adoquery,试了很多方法都没有搞定,最后用的是adotable几句就可以搞定;
首先把adotable空间的属性设好(表名&数据库连接),然后用下面几句就可以了
adotable1.open;
adotable1.insert;
adotable1.FieldByName('id').value:=赋值;
TBlobField(adotable1.FieldByName('picture')).LoadFromFile(文件名);
adotable1.post;
 
使用的数据连接是 orcal for odbc 吗?
 
后退
顶部