blob emp_id_pic
SELECTBLOB salary_hist
INTO : emp_id_pic
FROM Employee
WHERE Employee.Emp_Num = 100
USING Emp_tran
li_FileNum = FileOpen( "C:\EMPLOYEE\EMP_PICS.BMP", StreamMode!, Write!, Shared!,Replace!)
FileWrite(li_FileNum, emp_id_pic)
这是pb帮助文件中的例程 从数据库Employee表读取编号为100的图片 保存到"C:\EMPLOYEE\EMP_PICS.BMP"
有两方法,1是图片保存在服务器的共享文件夹里,数据库保存图片的路径2是直接把图片当成大二进制文件保存进数据库,以下是例子:
//取图号
string ls_id
ls_id = this.GetItemString(row,'id')
//选择文件
string pname, fname
value = GetFileOpenName("请选择图片",pname, fname,'jpg', +'Jpg 文件(*.jpg),*.jpg,所有文件(*.*),*.*')
IF value <>1 THEN return
//显示文件
dw_1.object.p_1.filename = fname
SetPointer( HOURGLASS! )
SQLCA.AutoCommit = True
//测定文件长度
long ll_len
ll_len = FileLength(pname)
//打开文件
integer fileno
fileno = FileOpen(pname,StreamMode!,READ!,LOCKREAD!)//读文件
blob lb_file ,lb_fn
int li_ii,ii
li_ii = ceiling(ll_len/32765)
for ii = 1 to li_ii
FileRead (fileno, lb_fn)
lb_file = lb_file + lb_fn
next//文件存入数据库
updateblob sysman set pict = :lb_file where id = :ls_id
if SQLCA.SQLNRows >0 then
MessageBox('提示信息','此图片以成功存入数据库!')
end if
fileclose(fileno)
SQLCA.AutoCommit = False
我不太清楚你这个是什么东西,但是可以告诉你几个可能出现你这种情况的原因
储存图片的变量太小,无法储存全部的图像信息
FileWrite以后没有关闭文件输入输出流就结束了程序,也有可能导致数据不完全
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)