WEB开发网
开发学院数据库MSSQL Server 用VB存取SQL Server中的图像数据 阅读

用VB存取SQL Server中的图像数据

 2007-12-27 15:30:53 来源:WEB开发网   
核心提示:可以看出,这三个函数的使用比较复杂,用VB存取SQL Server中的图像数据(3),虽然可以通过生成存贮过程来调用执行,但有一个缺陷是在读取数据时,可能会引起服务器、客户机死机或是服务器的性能大大下降,因此使用这两个函数时,READTEXT函数读取的数据无法直接传递回前端应用程序,3、VB 6.0中图像数据的存取VB

可以看出,这三个函数的使用比较复杂,虽然可以通过生成存贮过程来调用执行,但有一个缺陷是在读取数据时,READTEXT函数读取的数据无法直接传递回前端应用程序。

3、VB 6.0中图像数据的存取

VB 6.0 的ADO Field对象提供了GetChunk方法和AppendChunk方法来存取BLOB数据,这两个函数实质是通过API调用WRITETEXT 、READTEXT和UPDATETEXT这三个函数,简化了调用的方法。

(1)GetChunk和AppendChunk方法介绍:

GetChunk方法检索其部分或全部长二进制或字符数据。GetChunk 调用返回的数据将赋给“变量”。如果 Size 大于剩余的数据,则 GetChunk 仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则 GetChunk 方法返回 Null。每个后续的 GetChunk 调用将检索从前一次 GetChunk 调用停止处开始的数据。但是,如果从一个字段检索数据然后在当前记录中设置或读取另一个字段的值,ADO 将认为已从第一个字段中检索出数据。如果在第一个字段上再次调用 GetChunk 方法,ADO 将把调用解释为新的 GetChunk 操作并从记录的起始处开始读取。Field 对象的第一个 AppendChunk 调用将数据写入字段,覆盖所有现有的数据,随后的 AppendChunk 调用则添加到现有数据。

由于系统资源总是有限的,如果一次读(存)取大量数据,可能会引起服务器、客户机死机或是服务器的性能大大下降,因此使用这两个函数时,要将图像数据进行分段读写。

(2)程序实现:

程序一:写数据函数:

Public Function AppendBlobFromFile
(blobColumn As ADODB.Field, ByVal FileName) As Boolean
Dim FileNumber As Integer '文件号
 Dim DataLen As Long '文件长度
Dim Chunks As Long '数据块数
Dim ChunkAry() As Byte '数据块数组
Dim ChunkSize As Long '数据块大小
Dim Fragment As Long '零碎数据大小
Dim lngI As Long '计数器
On Error GoTo ErrorHandle
AppendBlobFromFile = False
ChunkSize = 2048 '限制每次读取的块大小为 2K
FileNumber = FreeFile '产生随机的文件号
Open FileName For Binary Access Read As FileNumber '打开图像文件
DataLen = LOF(FileNumber) '获得文件长度
If IsNull(blobColumn) Then Exit Function
If DataLen = 0 Then '文件长度为0
Close FileNumber
 AppendBlobFromFile = True
 Exit Function
End If
Chunks = DataLen ChunkSize '数据块的个数
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then '先写零碎数据
ReDim ChunkAry(Fragment - 1)
 Get FileNumber, , ChunkAry() '读出文件
 blobColumn.AppendChunk ChunkAry '调用AppendChunk函数写数据
End If
ReDim ChunkAry(ChunkSize - 1) '为数据块开辟空间
For lngI = 1 To Chunks '循环读出所有数据块
 Get FileNumber, , ChunkAry() '读出一块数据
 blobColumn.AppendChunk ChunkAry '在数据库中增加数据块
Next lngI
Close FileNumber '关闭文件
AppendBlobFromFile = True
Exit Function
ErrorHandle:
AppendBlobFromFile = False
MsgBox Err.Description, vbCritical, "写图像数据出错!"
End Function

上一页  1 2 3 4  下一页

Tags:VB 存取 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接