VB中对大字段的存取AppendChunk和GetChunk
来源:互联网 发布:查看linux下tomcat版本 编辑:程序博客网 时间:2024/06/10 04:29
AppendChunk
Public Function SaveFileToDB(ByVal Filename As String, dbField As ADODB.Field, Optional
PackageSize As Long = 8192&) As Long
On Error GoTo errHandle
Dim lngActualSize As Long, lngCurrentSize As Long
Dim bTemp() As Byte
Dim hFile As Long
Dim i As Integer
Dim lChunkCount As Long
Dim lChunkRemainder As Long
lngActualSize = FileLen(Filename)
lngCurrentSize = 0
If lngActualSize <= 0 Then
Err.Raise ERR_SIZE_EQU_OR_LESS_ZERO, "writeFileToDB"
End If
'读取文件内容
hFile = FreeFile()
Open Filename For Binary As hFile
ReDim bTemp(PackageSize) '临时存贮块
lChunkCount = LOF(hFile) / PackageSize '取块数
lChunkRemainder = LOF(hFile) Mod PackageSize
If lChunkRemainder > 0 Then lChunkCount = lChunkCount + 1
For i = 1 To lChunkCount
Get hFile, , bTemp '从文件中取出一块
dbField.AppendChunk (bTemp) '将块写入字段中
Next
Close #1
SaveFileToDB = 0
Exit Function
errHandle:
SaveFileToDB = Err.Number
End Function
GetChunk
Public Function GetFileFromDB(dbField As ADODB.Field, vData As Variant, Optional ByVal SaveAs As String = "", Optional PackageSize As Long = 8192&) As Long
'如果SaveAs为空串则保存在vData这个变体类型中,否则保存在文件中
On Error GoTo errHandle
Dim i% , lngActualSize As Long, lChunkCount As Long
Dim vTemp As Variant, bTemp() As Byte
Dim hFile As Long
lngActualSize = dbField.ActualSize
If lngActualSize <= 0 Then
Err.Raise ERR_SIZE_EQU_OR_LESS_ZERO, "getFileFromDB"
End If
lChunkCount = lngActualSize / PackageSize
If (lngActualSize Mod PackageSize <>0) Then
lChunkCount = lChunkCount + 1
End if
If Trim(SaveAs) = "" Then
For I = 1 To lChunkCount
vTemp = dbField.GetChunk(PackageSize)
vData = vData & vTemp
Next
Else
hFile = FreeFile()
Open SaveAs For Binary As hFile
For I = 1 To lChunkCount
bTemp = dbField.GetChunk(PackageSize)
Put #hFile, , bTemp
Next
Close
End If
GetFileFromDB = 0
Exit Function
errHandle:
GetFileFromDB = Err.Number
End Function
- VB中对大字段的存取AppendChunk和GetChunk
- ASP中对大字段的存取AppendChunk和GetChunk
- 对数据表中大字段的处理方式
- 使用ADO GetChunk/AppendChunk 数据库存取二进制文件(如程序,图象等)
- Spring对大字段的处理
- vb.net中关于大字段(Clob,blob)的完整实例
- AppendChunk and GetChunk Methods Example (VC++)
- oracle中大字段的处理
- java中大字段
- 用Jdbc存取Oracle大字段对象
- hibernate中对大字段处理(Blob&Clob)
- Oracle的大字段
- Oracle的大字段类型和Mysql的大字段类型对比
- Oracle9i客户端EXP导出高版本数据库中BLOB和CLOB大字段的问题
- Oracle9i客户端EXP导出高版本数据库中BLOB和CLOB大字段的问题
- Oracle9i客户端EXP导出高版本数据库中BLOB和CLOB大字段的问题
- 大字段文本(CLOB)的数据库存取与页面显示
- 图片和大字段上传
- 一些个人感想
- 3-29-20:19Struts的Validation机制
- 心情/摘
- P2P 之 UDP穿透NAT的原理与实现(附源代码)
- ASP中对大字段的存取AppendChunk和GetChunk
- VB中对大字段的存取AppendChunk和GetChunk
- VB(EXE)/VC(DLL)混合编程实例
- VxWorks上的STL错误
- SQL Server 2000之日志传送功能 - 描述(1)
- 国足、苏丹红、赞助商
- SQL Server 2000之日志传送功能 - 设定(2)
- SQL Server 2000之日志传送功能 - 问题解决
- SQL Server 2000之日志传送功能 - 设定(1)
- SQL Server 2000之日志传送功能 - 设定(3)