ASE15.0.3问题请教,在线等待,盼急回,感谢(数据库中保存超大文件,PB中无法使用SYC sybase ase),
现就问题说明如下:
我想把程序的升级文件保存在数据库中,方便各个客户端下载,文件转成blob保存在数据库中代码如下:
f_sys_fileto_blob方法如下
global function boolean f_sys_fileto_blob (string sfilename, ref blob sfilecontent);
Integer loops, i
Long flen, fnum, bytes, newpos
Blob readblob
SetPointer(HOURGLASS!)
IF Not FileExists(sfilename) THEN Return False
flen = FileLength(sfilename)
fnum = FileOpen(sfilename, STREAMMODE!, READ!, LOCKREAD!)
IF flen > 32766 THEN loops = ((flen - 1) / 32766) + 1 ELSE loops = 1
FOR i = 1 To loops
bytes = FileRead (fnum, readblob)
IF i = 1 THEN sfilecontent = readblob ELSE sfilecontent = sfilecontent + readblob
newpos = newpos + bytes
FileSeek (fnum, newpos, FROMBEGINNING!)
NEXT
FileClose(fnum)
Return True
end function
if f_sys_fileto_blob(filesname,tot_b) = false then
dw_file.SETITEM(i,2,'上传失败')
return 1
end if
messagebox('文件转成blob后长度',len(tot_b)) 此处得到的文件长度和要传的文件大小一致
delete from fileupdate where filename = :fname;
commit;
insert into fileupdate (bbh,filename) values (:ls_ver,:fname);
commit;
Sqlca.autocommit = true
updateblob fileupdate set filenr = :tot_b where filename = :fname;
if SQLCA.SQLCode = -1 then
dw_file.SETITEM(i,2,'上传失败')
MessageBox(gs_mess,SQLCA.SQLErrText,Information!)
return -1
else
dw_file.SETITEM(i,2,'上传成功')
commit;
end if
setnull(tot_b )
selectblob filenr into :tot_b from fileupdate where filename = :fname;
messagebox('文件保存数据中后长度',len(tot_b)) //此处得到的文件长度只的 32767
Sqlca.autocommit = false
如果文件大小小于32767 的话,可以保存在数据库中,也可以将数据库中的blob 读取,写成正确的文件,但文件超过32767就不行,请高手指点一下
我在PB11.5开发环境下,想用syc sybase ase 连接数据库,连接不成功 提示很多的 ?????????????????(在dsedit中是能ping成功的)
我在PB9开发环境下,想用syc sybase ase 连接数据库, 根本就不能new profile 提示未安装正确,但确实不知道怎么安装,不知道是不是版本高了的原因我的ASE用的15.0.3的开发版
PB9用syc sybase ase 专用连接如何连接ase15的数据库呢?要怎么安装请说明谢谢!