ASP使用AppendChunk将二进制数据存储进数据库

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

大家知道一般情况下ASP插入一条数据采用的是INSERT INTO语句,先建立ADODB.Connection,然后直接Execute INSERT语句,简单方便,但是有时候我们需要插入二进制到数据库中那该怎么办呢?

首先大家想到的是建立长字符串比如像Access备注那样的数据库字段,然后将二进制进行编码,最后像往常一样INSERT语句插入,至于编码的办法有很多,比如Base64编码,更详细的可以参考这篇文章《Base24、Base64编码的几种程序实现》。但是这种办法有其性能和空间上的缺点,特别是对比较大的二进制数据进行处理时,不过一般我们存储到数据库的二进制文件不应该很大,否则会给数据库带来不必要的负担。

可能有读者发现,数据库比如Access有二进制(Binary)这个字段,这说明我们可以不用编码就能把二进制插入到数据库中,如果是这样的话,传统的INSERT INTO明显就不能胜任的,这时后我们就需要ADO的AppendChunk方法。

AppendChunk
说明:将数据追加到大型文本、二进制数据 Field 或 Parameter 对象。
语法:object.AppendChunk Data
参数:
object Field 或 Parameter 对象
Data 变体型,包含追加到对象中的数据。

相应的,有AppendChunk将二进制存储进数据库,就有GetChunk将二进制读取出来,MSDN有个VB的例子很好的演示了这两个方法,参见《AppendChunk and GetChunk Methods Example (VB)》

要使用这两个方法就必须创建ADODB.Recordset记录集,记录集在ASP中扮演很重要的角色,刚开始学习ASP时很多讲解都是和记录集有关的,但是其对于简单的SQL操作还是略显麻烦,所以对于简单的SQL操作,在避免SQL注入攻击的前提下还是直接Execute SQL吧。

最后给出个简单的示例:

1
2
3
4
5
6
7
8
9
10
11
<%
' conn变量为打开的ADODB.Connection数据库连接对象
' MyBinaryData 为要存储的二进制数据
Set rs = Server.CreateObject("ADODB.Recordset") 
rs.Open "SELECT * FROM pic where id is null",conn,1,3 
rs.AddNew
rs("img").AppendChunk MyBinaryData 
rs.Update 
rs.Close 
set rs=Nothing
%>
若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!
请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注