Oracle大文本在ASP中存取问题的解决
一、运行环境:
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 "总计占用字符数: " & formatnumber(b,2,-2,-2,-1) & " 字<br>"
Response.write "总计占用字节数: " & formatnumber(a,2,-2,-2,-1) & " Byte<br>"
Response.write "<a href=‘’view.asp‘’>请调阅……"
‘’关闭数据连接。
rs.close
set rs=nothing
Set OraSession=nothing
Response.end
End If
%>
<html>
<body>
<form method="POST" action="test.asp">
<p>Oracle大字段在ASP中存取问题的解决:</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
%>
四、后记:
因为数据类型采用的是long型,ORACLE规定long型容量<2GB,所用以上方法可以存入<2GB的大文本,但是我发现在读出的时候却只能读出最大64K的内容,也许是受ASP的限制。
各位,如果您有更多的体会或更好的解决方法请来信告之。
下一篇:如何禁止使用FilesystemObject组件? >>
相关文章:
- · 鼠标下浮动文字
- · 改mdb为asp所带来的灾难
- · 导出lotus用户的方法(用asp技术)
- · 我的asp整理
- · 用javascript来获取用户客户端分辨率
- · ASP编程中20个非常有用的例子
- · 不用ADOX也可以判断access表是否存在
- · web.config 简单介绍
- · 把文章内容中涉及到的图片自动保存到本地服务器
- · 页面中点击鼠标右键----弹出与windows界面相似的菜单
- · 控制IE WebControl中TreeView的高度
- · ASP.NET WEB页面多语言支持解决方案
- · 身份证号码验证函数
- · 一个判断字符串的数值类型
- · 重返ASP时代
- · 使用ASP.NET中的一点体会
- · Asp及Web开发中的常见问题.
- · 虚机服务中常见Asp.Net低级错误一览
- · UDDI FAQs
- · ASP.NET 2.0页面框架的几处变化
- · 生成任意位随机数的函数
- · 用ASP实现下载*.ASP文件
- · web.config 基本设置
- · 上传图片文件,生成缩略图,并写上版权信息
- · 在 ASP.NET 中实现 Page Controller
- · 一个排列问题
- · 怎样读取一个文本文件的内容?
- · 在结果中搜索
- · 每个开发人员现在应该下载的十种必备工具
- · 大数量查询分页显示 微软的解决办法
- · 关于命名规则的一些想法
- · 利用Asp.net 动态创建DataList
- · 一个考试程序
- · 汉字转化为拼音
- · asp动态include文件
- · VBScript 函数
- · Asp程序错误详细说明例表
- · Asp.NET常用函数
