阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

手机号码,快捷登录

老司机
查看: 2219|回复: 0

[推荐] Oracle大文本在ASP中存取问题的解决

[复制链接]

该用户从未签到

发表于 2009-4-16 08:28:22 | 显示全部楼层 |阅读模式
在我开发BS结构程序中,由于经常需要在ORACLE中处理一些容量较大的文本数据,所以经过反复测试终于用ASP成功解决了大文本数据在ORACLE下存取问题。
一、运行环境:
1、Microsoft Windows 2000 Server + IIS 5.0
2、Oracle8i中文标准版
二、建立数据表:
  CREATE TABLE SYSTEM.TEST( BLOB LONG,ID NUMBER) /
三、源程序:
1、数据存入程序:test.asp
<% ’表单提交处理部分

’--------------------------------------------------

If request(ok)=1 then

’字符转换函数
function tansstr(sstr)  
sstr=replace(sstr, , )
sstr=replace(sstr,chr(13) & chr(10),<br>)
tansstr=sstr
end function
’提交数据赋值
a=lenb(request(text))
b=len(request(text))

c=tansstr(request(text))
’打开数据库,打开test数据表以Rs为记录集
Set OraSession=CreateObject(OracleInProcServer.XOraSession)
Set OraDatabase=OraSession.DbOpenDatabase(autop,system/manager,0)
Set rs=OraDatabase.CreateDynaset(select * from test order by id desc,0)
’求ID值

if rs.eof then

id=1
else
id=rs(id)+1  
end if
’因为受SQL语句长度大小限制所以,以非SQL语句存入数据
’--------------------------------------------------------
’新建记录
rs.DbAddNew
’经典就在本句:以RS记录集的Fields对象的DbAppendChunk方法处理大字段存入问题。
rs.Fields(blob).DbAppendChunk(c)
’存入ID值
rs(id)=id  
’刷新记录集
rs.DbUpdate
’显示结果部分  
’---------------------------------------------------------
Response.write 数据已经存入数据库中。<br>
Response.write 总计占用字符数: <font color=blue> & formatnumber(b,2,-2,-2,-1) & </font> 字<br>
Response.write 总计占用字节数: <font color=blue> & formatnumber(a,2,-2,-2,-1) & </font> Byte<br>
Response.write <a href=’view.asp’>请调阅……</a>
’关闭数据连接。
rs.close
set rs=nothing

Set OraSession=nothing

Response.end

End If

%>
<html>
<body>

<form method=POST action=test.asp>
<p><font color=#FF0000><b>Oracle大字段在ASP中存取问题的解决:</b></font></p>
<p><textarea rows=13 name=text cols=104></textarea></p>
<p><input type=submit value=存入 name=B1></p>

<input type=hidden name=ok value=1>
</form>
</body>

</html>
2、数据调出程序:view.asp
<%
’连接数据库,以只读方式打开数据表
Set OraSession=CreateObject(OracleInProcServer.XOraSession)
Set OraDatabase=OraSession.DbOpenDatabase(autop,system/manager,0)

Set Rs=OraDatabase.DbCreateDynaset(select * from test order by id desc,4)

’赋初值:定义每次截取字节大小为1024byte,最大可以设为65280byte (64K)
Size=65280

I=0
Do
’以Rs记录集的Fields对象的DbGetChunk方法在循环中读出数据
Text=Rs.Fields(Blob).DbGetChunk(I*Size,Size)
Response.write Text

’求出每次取出数据的详细字节数
Text_Size=Lenb(Text)
I=I+1
’如果每次取出数据的详细字节数小于欲定义的截取字节大小则说明该条数据已经完毕,退出循环。
Loop until Text_Size<Size  
’关闭数据连接   
Set OraSession=nothing
%>



转自: ASP教程采集
?63epEk
楼主热帖
启用邀请码注册,提高发帖质量,建设交流社区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表