怎么用delphi 把音乐格式的文件 转化成可以存到oralce数据库的文件 我听别人说可以转成流媒体文件保存数据库里 字段是blob型的 然后读的时候还要转 怎么转啊!最好给我留个例子 谢谢!
解决方案 »
- MySql+delphi 通过internet传输数据的问题请教
- DELPHI下内嵌汇编int22这个中段指令要用什么代替了,操作系统是2K
- 用ado直接连接access,生成的exe文件直接点击运行正常,可是点击桌面上快捷方式就找不到数据库?
- 关于透明容器,再一次提问!
- con.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;(就是这后面,如果要接密码,用什么来着?)
- ADO链ACCESS的数据库应用程序,为什么编译后的EXE文件在别的机器上运行不了??(急!在线等候)
- 救急
- 如何使图片存贮突破32k限制?
- 5.1放假了,走时再替我解决一个问题好了!
- 求解:怎么搞定模糊查询?
- 淘宝登录
- dbExpress的TSQLQuery.CommandText不能用临时表,如:#tb1
var
MS: TMemoryStream;
begin
if not (ClientDataSet1.State in [dsInsert, dsEdit]) then
ClientDataSet1.Insert;
MS := TMemoryStream.Create();
try
Image1.Picture.Bitmap.SaveToStream(MS);
ClientDataSet1Images.LoadFromStream(MS);
finally
MS.Free;
end;
ClientDataSet1.Post;
end;
将流存入字段
TBlobField(字段).LoadFromStream();
将字段内容存为流或文件
TBlobField(字段).SaveToStream();
如果不能播放流的话,就存为文件,然后播放
TBlobField(字段).SaveToFile();
Filestream:TFileStream;
StreamSize:Int64;
ArrayBuffer:Array of byte;
begin
OpenDialog1.Execute;
Filestream:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
try
StreamSize:=Filestream.Size;
Filestream.Position:=0;
SetLength(ArrayBuffer,StreamSize);
Filestream.readbuffer(ArrayBuffer[0],StreamSize);
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('UPDATE es_map SET mapcon=:pmapcon WHERE mapid=:Pmapid');
SQLQuery1.ParamByName('Pmapcon').SetBlobData(ArrayBuffer,StreamSize);
SQLQuery1.ParamByName('Pmapid').AsString:=ClientDataSet1.FieldByName('mapid').AsString;
SQLQuery1.ExecSQL;
ClientDataSet1.Refresh;
finally
Filestream.Free;
end;
读取的例子如下:
var
Stream2:TMemoryStream;
StreamSize:Int64;
ArrayBuffer:Array of byte;
BitImage:TBitmap;
JPEGImage:TJPEGImage;
begin
Stream2:=TMemoryStream.Create();
BitImage:=TBitmap.Create;
JPEGImage:=TJPEGImage.Create;
try
if ClientDataSet1.FieldByName('MAPCON').IsBlob then
begin
(ClientDataSet1.FieldByName('MAPCON') as TBlobField).SaveToStream(Stream2);
StreamSize:=Stream2.Size;
Stream2.Position:=0;
showmessage('size='+IntToStr(StreamSize));
SetLength(ArrayBuffer,StreamSize);
Stream2.readbuffer(ArrayBuffer[0],StreamSize);
Stream2.Position:=0;
if (ArrayBuffer[0]=byte('B')) and (ArrayBuffer[1]=byte('M')) then
begin
BitImage.LoadFromStream(Stream2);
DBImage1.Picture.Assign(BitImage);
end;
if (ArrayBuffer[6]=byte('J')) and (ArrayBuffer[7]=byte('F')) and (ArrayBuffer[8]=byte('I')) and (ArrayBuffer[9]=byte('F')) then
begin
JPEGImage.LoadFromStream(Stream2);
DBImage1.Picture.Assign(JPEGImage);
end;
end;
finally
BitImage.Free;
JPEGImage.Free;
Stream2.Free;
end;