刚看了一个这方面的教程,里面这样说:DBImage组件没有 LoadFromFile 这个方法。DBImage组件的内容只是结果而非源头,应该针对原始数据库着手,也就是从对数据库字段的永久性 TField组件下手,TField组件有一个DataType属性,由这个属性可得到TField组件对应数据库的字段应该使用什么样的数据类型。
教程用用的是一个 BLOB(Binary Large Object)字段小弟对数据库不是很了解,有几个问题向各位请教:
1。TField跟数据库(我用的是SQL SERVER 2000)里的每一列是不是一一对应的?
2。SQL SERVER 2000里没有 BLOB这种数据类型,怎么办?
教程用用的是一个 BLOB(Binary Large Object)字段小弟对数据库不是很了解,有几个问题向各位请教:
1。TField跟数据库(我用的是SQL SERVER 2000)里的每一列是不是一一对应的?
2。SQL SERVER 2000里没有 BLOB这种数据类型,怎么办?
var
tempStream:TMemoryStream;
JpgPic:TJpegImage;
myBmp:Tbitmap;
begin
try
JpgPic:=TJpegImage.Create; // 创建JPE图片
myBmp:=Tbitmap.Create; tempStream:=TMemoryStream.Create; // 创建内存流
tempStream.clear; // 初始化流 if not OpenPictureDialog1.Execute then Exit; // 执行“打开图片”的对话窗口
if UpperCase(ExtractFileExt(OpenPictureDialog1.filename))='.BMP' then //上BMP文件则进行转换
begin
myBmp.LoadFromFile(OpenPictureDialog1.filename); //把打开的BMP文件存入myBMP中
JpgPic.Assign(myBmp); //转换格式
end
else
JpgPic.LoadFromFile(OpenPictureDialog1.filename); // 将选定的图片存入该变量
DBImage1.Picture.bitmap.assign(JpgPic); //若你想DBIMAGE显示JPG图像就可这样.
JpgPic.SaveToStream(tempStream); //将该变量中的内容存入流
AdoQuery1.Open; // 打开数据集
adoquery1.Append; // 让数据集处在追加模式
tblobfield(adoquery1.FieldByName('F_Photo')).LoadFromStream(tempStream) ; //将流中的信息写入数据表
adoquery1.Post; // 向服务器递交修改
finally
JpgPic.Free; // 释放
tempStream.Free; // 释放
end;
end;