急啊~关于ADO的和SQL的问题~达人快来帮忙啊

atlaswh 2003-09-15 12:06:03
现在要往SQL SERVER 2000中写入无头的二进制裸数据,SQL SERVER中数据类型为IMAGE
代码在ACCESS中运行一切正常,数据也正常,ACCESS中数据类型为OLE VARIANT
但一到SQL SERVER 中就报 BMP图象不完整的错误。
用VC封装的ADO方法导入一切正常,是不是ADO有问题
大概都来帮帮偶啊~~偶实在没折了。。。
...全文
91 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_xizhousheng 2003-10-09
  • 打赏
  • 举报
回复
别用Image类型来存图象,用blob类型
,用流来访问
shpys 2003-10-09
  • 打赏
  • 举报
回复
我来帮你结贴了:)
atlaswh 2003-09-16
  • 打赏
  • 举报
回复
不要给冲掉啊~~~~我顶~~~~~~~~~~~~~~
bw110323 2003-09-15
  • 打赏
  • 举报
回复
up
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
不过~上面的代码好象是通过文件来操作的~
我只能通过数据库来操作,最好不要通过文件~而且现在数据库是因为没有文件头,而ADO又自动检测数据完整性造成的好象。
所以,最好能有跳过ADO自动检测的办法,因为我获得的数据全是无头的裸数据,如果不把这问题解决我连数据也读不出来了
谢谢大家的帮忙~:)
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
wanghao@isvision.com
谢谢
  • 打赏
  • 举报
回复
你留下EMAIL,我给你发过去。
JXMJXM@163.NET
  • 打赏
  • 举报
回复
sql数据表结构 ccc image 16


procedure TForm1.Button2Click(Sender: TObject);//写数据
var
sFileName: string;
function BlobContentToString(const FileName: string): string;
begin
with TFileStream.create(FileName, fmOpenRead) do
try
SetLength(Result, Size);
Read(Pointer(Result)^, Size);
finally
Free;
end;
end;
begin
if (OpenDialog1.Execute) then
begin
sFileName := OpenDialog1.FileName;
adodsBlobs.Edit;
adodsBlobs.FieldByName('ccc').AsString :=
BlobContentToString(sFileName);
adodsBlobs.Post;
end;
end;


procedure TForm1.Button3Click(Sender: TObject);//读数据
var
sFileName: string;
BS: TADOBlobStream;
begin
BS := TADOBlobStream.Create(TBlobField(adodsBlobs.FieldByName('ccc')), bmRead);
try
sFileName := ExtractFilePath(Application.ExeName)+ '.bmp';
BS.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName, False);
finally
BS.Free;
end;
end;
aiunong 2003-09-15
  • 打赏
  • 举报
回复
up
bw110323 2003-09-15
  • 打赏
  • 举报
回复
路过。。。
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from TimeBook');
adoquery1.Open;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select * from TimeAccount');
adoquery2.Open;
adoquery1.Next;
adoquery2.Edit;

strm := TMemoryStream.Create;
strm.SetSize(12500);
strm.Seek(0,soFromBeginning);

(adoquery1.Fields[7] as TBlobField).SaveToStream(strm);
(adoquery2.FieldByName('taSnap') as TBlobField).LoadFromStream(Strm);

adoquery2.Post;

adoquery1连的是ACCESS数据库,我拿来做测试的,原来有数据在里面的
忘了说了。。。。如果是用VC插到sql里
然后
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from TimeAccount');
adoquery3.Open;
open的时候也是报一样的错,所以我怀疑是ADO对数据进行了检测,因为没有文件头所有无法通过,以上代码在ACCESS测试中全部通过。。。。
  • 打赏
  • 举报
回复
代码贴出来看看。不行给我发消息
  • 打赏
  • 举报
回复
代码贴出来看看。不行给我发消息
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
千万不要沉啊。。。。偶拼死也要顶啊~~~~
达人们快来帮帮忙啊~~~~
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
天。。。。偶说的是ACCESS中通过。。。在SQL SERVER里报文件不完整的错~~
哪位达人来帮帮偶啊~~5555
XXXXXXXX 2003-09-15
  • 打赏
  • 举报
回复
配置access数据库时,将blob size设置为1024,他的默认值是32
hongqi162 2003-09-15
  • 打赏
  • 举报
回复
gz
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
报的错是 "bitmap image is not vaild" 偶快给它逼疯了。。。
atlaswh 2003-09-15
  • 打赏
  • 举报
回复
5555,偶也有换过啊~~但好象都插不进去。。。
还有啥类型好用吗?最好不要改变类型呢`麻烦还是比较大的说~
我不懂电脑 2003-09-15
  • 打赏
  • 举报
回复
可能是数据类型地问题,建议你用其他类型看看。

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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