怎么把文件写入数据库 我用的数据库是MS-SQL Server2000,我在其中一个数据表中设了image类型的字段,用来存储文件,请问在客户端的程序中应该怎么把文件写入数据库,又怎样把文件取出来使用,急用,能给点代码作示例最好,感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 读: TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");TBlobStream * pmem=new TBlobStream(pField,bmRead);pmem->Seek(0,soFromBeginning);Graphics::TBitmap * pBitmap=new Graphics::TBitmap();pBitmap->LoadFromStream(pmem);Image1->Picture->Assign(pBitmap);delete pBitmap;delete pmem;写:TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");TBlobStream * pmem=new TBlobStream(pField,bmWrite);pmem->Seek(0,soFromBeginning);Graphics::TBitmap * pBitmap=new Graphics::TBitmap();pBitmap->Assign(Image1->Picture->Graphic);pBitmap->SaveToStream(pmem);delete pBitmap;delete pmem;注意:一定要用此方法进行读写,因为实际上它是以二进制流的方式存入数据库! 存到数据库varpjpg:tjpegimage;pic:TMemoryStream;beginpjpg:=tjpegimage.Create;pjpg.LoadFromFile(F:\JPG.jpg);pic:=TMemoryStream.Create;pjpg.SaveToStream(pic);pic.Position:=0;TBlobField(dataset.FieldByName('Img')).LoadFromStream(pic);dataset.post;pic.Free;pjpg.free;end;从数据库取出varpjpg:tjpegimage;pic:TMemoryStream;beginpjpg:=tjpegimage.Create;pic:=TMemoryStream.Create;TBlobField(dataset.FieldByName('Img')).savetoStream(pic);pic.positon:=0;pjpeg.LoadFromStream(pic);image.graphi.bmp.assign(pjpeg);end;end; 读: ...... adoq.sql.text := 'select * from tableName'; adoq.open; TBlobField(adoq.fieldbyName('imgFieldName')).SaveToFile(FileName); adoq.close; 写 : adoq.sql.text := 'insert into tableName (imgFieldName) values(:img)'; adoq.Parameters.ParameterByName('img').loadFromFile(FileName,ftBlob); adoq.execsql; 怎么解决WIN7系统注册插件的权限问题? 求助 QQ左边导航栏组件 条码打印机 计划本月中旬辞职,有没需要做些小应用软件的 读取共享内存出问题 图形工具:怎样在bmp的放大状态下画线,写字等(画的线条也有放大效果),就象window的画图工具一样。 fastreport 分类合计 含dbexpress的数据库程序的安装问题? 我想将数据库中的图片字段转换为TmemoryStream型,可以吗? 请问如何获取鼠标指向的对象名? 请前辈们指点,如何调用有参数的存储过程 请问,我在客户端用多线程来建立服务器连接一直报错。为什么?
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");TBlobStream * pmem=new TBlobStream(pField,bmRead);pmem->Seek(0,soFromBeginning);Graphics::TBitmap * pBitmap=new Graphics::TBitmap();pBitmap->LoadFromStream(pmem);Image1->Picture->Assign(pBitmap);delete pBitmap;delete pmem;写:TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");TBlobStream * pmem=new TBlobStream(pField,bmWrite);pmem->Seek(0,soFromBeginning);Graphics::TBitmap * pBitmap=new Graphics::TBitmap();pBitmap->Assign(Image1->Picture->Graphic);pBitmap->SaveToStream(pmem);delete pBitmap;delete pmem;注意:一定要用此方法进行读写,因为实际上它是以二进制流的方式存入数据库!
存到数据库
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pjpg.LoadFromFile(F:\JPG.jpg);
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(dataset.FieldByName('Img')).LoadFromStream(pic);
dataset.post;
pic.Free;
pjpg.free;
end;
从数据库取出
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(dataset.FieldByName('Img')).savetoStream(pic);
pic.positon:=0;
pjpeg.LoadFromStream(pic);
image.graphi.bmp.assign(pjpeg);
end;end;
......
adoq.sql.text := 'select * from tableName';
adoq.open;
TBlobField(adoq.fieldbyName('imgFieldName')).SaveToFile(FileName);
adoq.close; 写 :
adoq.sql.text := 'insert into tableName (imgFieldName) values(:img)';
adoq.Parameters.ParameterByName('img').loadFromFile(FileName,ftBlob);
adoq.execsql;