可以,blob是以二进制形式存放大量数据
解决方案 »
- 【求包养】路过的大款,包养俺吧,俺活不下去了
- delphi编写的记事本的问题
- 高手请进!!!!我要将一个表中的数据导到另一个表中,要求速度,数据量很大
- 关于数据库的简单问题
- 怎么样才能得到当前可执行文件的目录,并且设置为DirectoryListBox的值-急!!!!
- RICHEDIT保存成文本文件的问题?
- @@@@@招重庆籍DELPHI程序员,有意请联系[email protected]
- ----------------------我想这真是个难题,难道我水平太差?!!!需要这样的控件:form的背景是图片,在form上放置按钮,这个按钮要透明
- 请问var里面的错误
- 鼠标滚动触发哪个事件
- 如何将图片(.ico)保存导数据库?
- midas的连接?
var
B:TBlobField;
begin
if OpenDialog1.Execute then
begin
Table1.Edit;
B:=TBlobField(Table1.Fields[1]);
B.LoadFromFile(Opendialog1.FileName);
Table1.Post;
Application.Messagebox('ok','信息',MB_ICONINFORMATION);
end;
end;
读入数据库:
procedure TForm1.Button1Click(Sender: TObject);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
begin
OpenDialog1.Filter:=avi文件(*.avi)¦*.avi';{从对话窗选择文件}
if OpenDialog1.Execute then
begin
MyFile:=TFileStream.Create(OpenDialog1.FileName ,fmOpenRead);
with table2 do {‘table2’为含BLOB字段的表名}
begin
//Open;
Edit; Stream := TBlobStream.Create(Fieldbyname('content')as TBlobField, bmWrite);{‘content’为BLOB字段名}
MemSize := MyFile.Size;
Inc(MemSize); {Make room for the buffer's nullterminator.}
Buffer := AllocMem(MemSize); {Allocate thememory.}
try
Stream.Seek(0, soFromBeginning); {Seek 0 bytesfrom the stream's end point}
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
try
Post;
except
on E: EDatabaseError do
if application.HandleException(E) <> 0 then
exit
else
raise;
end;
end;
end;
end;
BLOB字段我在sql server7中用的是image,我试着用text好像出错,我一直找不到原因
从数据库中读出就不用我说了吧?
TBlobField(Table1.FieldByName('blob')).Assign(...);
请看帮助‘TBlobField’。
sql server7 中的Text字段只能用来存放AcsII码的数据的,要存放二进制码的数据就要用image
你可以往Text中存放一个很大的文本文件,但是就不能存其他二进制的文件的!
谢谢,俺以前不知道,谢谢指点迷津,可是我不能给你加分噢:)
字段 sqlserver :image
access2000:ole字段
用户选到一个.bmp或.jpg,如果是.bmp就转成.jpg,
存放到库中
只知道是二进制流
你具体是怎么做的?我连mp3都存进去了!怎么会不行呢?
BLOB SIZE、BLOBS TO CACHE值设大一些(缺省32、64),例如4096、8192
存放,在TADODataSet.AfterScroll()事件中将照片显示在TImage中,
都成了,还有什么可讲的
Table1: TTable;
bagin
...
// 倒入到数据库的表中
Table1.Insert;// 或者Table1.Edit;
// xxx字段为Blob字段,C:\Windows\xxx.xxx为任意文件
(Table1.FieldByName('xxx') as TBlobField).LoadFromFile('C:\Windows\xxx.xxx');
Table1.Post;
...
// 从数据库表中把数据倒入到文件
(Table1.FieldByName('xxx') as TBlobField).SaveToFile('C:\Windows\xxx.xxx');
...
end;
和Jpg有区别吗?Jpg怎么存,Gif也还怎么存。
你确定这样的可以吗?我是说 你实际中 这样用过吗?
你用的库是什么 ?对应的blob字段是什么类型?
但是 确实存不进去
在sqlserver中用的是 image类型的字段。
TField *zd=ADODataSet1->FieldByName("照片图像");
ADODataSet1->Edit();
TStream *bs=ADODataSet1->CreateBlobStream(zd,bmReadWrite);
bs->Position=0;
fs->Position=0;
bs->CopyFrom(fs,fs->Size);
ADODataSet1->Post();
delete bs;
delete fs;
var
fs: TFileStream;
zd: TField;
bs: TStream;
begin
fs:= TFileStream.Create("xxx.gif", fmOpenRead);
zd:= ADODataSet1.FieldByName("照片图像");
ADODataSet1.Edit;
bs:= ADODataSet1.CreateBlobStream(zd, bmReadWrite);
bs.Position:= 0;
fs.Position:= 0;
bs.CopyFrom(fs, fs.Size);
ADODataSet1.Post;
bs.Free;
fs.Free;
end;
上面我的程序无有问题