vb6.0中rs("照片").AppendChunk Chunk()的意思是什么
发布网友
发布时间:2024-10-05 21:15
我来回答
共1个回答
热心网友
时间:2024-10-05 22:00
AppendChunk 方法
将数据追加到大型文本、二进制数据 Field 或 Parameter 对象。
语法
object.AppendChunk Data
参数
object Field 或 Parameter 对象
Data 变体型,包含追加到对象中的数据。
说明
使用 Field 或 Parameter 对象的 AppendChunk 方法可将长二进制或字符数据填写到对象中。在系统内存有限的情况下,可以使用 AppendChunk 方法对长整型值进行部分而非全部的操作。
字段
如果 Field 对象 Attributes 属性中的 adFldLong 位被设置为真,则可以对该字段使用 AppendChunk 方法。
在 Field 对象上的第一个 AppendChunk 调用将数据写入字段,覆盖任何现有的数据,随后的 AppendChunk 调用则添加到现有数据。如果将数据追加到一个字段,然后设置或读取当前记录中另一个字段的值,ADO 则认为已将数据追加到第一个字段。如果在第一个字段上再次调用 AppendChunk 方法,那么 ADO 将调用解释为新的 AppendChunk 操作并覆盖现有数据。访问其他 Recordset 对象(并非第一个 Recordset 对象的复制品)中的字段将不会破坏 AppendChunk 操作。
调用 Field 对象的 AppendChunk 时如果没有当前记录,将发生错误。
参数
如果 Parameter 对象 Attributes 属性中的 adFldLong 位被设置为真,则可以对该参数使用 AppendChunk 方法。
Parameter 对象上的第一个 AppendChunk 调用将数据写入参数,覆盖任何现有数据,随后 Parameter 对象上的 AppendChunk 调用可添加到现有的参数数据中。传送空值的 AppendChunk 调用则放弃所有的参数数据。
示例
下面示例说明使用 AppendChunk 和 GetChunk
方法将基于数据页的、大的二进制对象 (BLOB) 数据写入远程数据源。这段代码需要一个名为 Chunks
的表,表中带有字符、文本、以及图象域。为了建立该表,提出如下代码作为对测试数据库的查询操作:
CREATE TABLE Chunks (ID integer identity NOT NULL, PName char(10) NULL,
Description TEXT NULL,
Photo IMAGE NULL)
CREATE UNIQUE INDEX ChunkIDIndex on Chunks(ID)
一旦建立了该表,就需要一个或多个 .BMP 或其它合适的、可由 PictureBox
控件定位装入的图形图象。
'
Option Explicit
Dim en As rdoEnvironment
Dim Qd As rdoQuery
Dim Cn As rdoConnection
Dim Rs As rdoResultset
Dim SQL As String
Dim DataFile As Integer, Fl As Long, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, I As Integer
Const ChunkSize As Integer = 16384
Private Sub Form_Load()
Set en = rdoEnvironments(0)
Set Cn = en.OpenConnection(dsname:="", _
Connect:="UID=;PWD=;DATABASE=WorkDB;" _
& ""Driver={SQL Server};SERVER=Betav486", _
prompt:=rdDriverNoPrompt)
Set Qd = Cn.CreateQuery("TestChunk", "Select * from
Chunks Where PName = ?")
End Sub
Private Sub LoadFromFile_Click()
'
' 将文件定位并为该文件设置文件名。
'
With CommonDialog1
.Filter = "Pictures(*.bmp;*.ico)|*.bmp;*.ico"
.ShowOpen
FileName = .FileName
End With
End Sub
Private Sub ReadFromDB_Click()
If Len(NameWanted) = 0 Then _
NameWanted = InputBox("Enter name wanted", "Animal")
Qd(0) = NameWanted
Set Rs = Qd.OpenResultset(rdOpenKeyset,
rdConcurRowver)
If Rs Is Nothing Or Rs.Updatable = False Then
MsgBox "Can't open or write to result set"
Exit Sub
End If
If Rs.EOF Then
MsgBox "Can't find picture by that name"
Exit Sub
End If
Description = Rs!Description
DataFile = 1
Open "pictemp" For Binary Access Write As DataFile
Fl = Rs!Photo.ColumnSize
Chunks = Fl \ ChunkSize
Fragment = Fl Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = Rs!Photo.GetChunk(Fragment)
Put DataFile, , Chunk()
For I = 1 To Chunks
ReDim Buffer(ChunkSize)
Chunk() = Rs!Photo.GetChunk(ChunkSize)
Put DataFile, , Chunk()
Next I
Close DataFile
FileName = "pictemp"
End Sub
Private Sub SaveToDB_Click()
If Len(NameWanted) = 0 Then _
NameWanted = InputBox("Enter name for this" _
& " picture", "Animal")
Qd(0) = NameWanted
Set Rs = Qd.OpenResultset(rdOpenKeyset, _
rdConcurRowver)
If Rs Is Nothing Or Rs.Updatable = False Then
MsgBox "Can't open or write to result set"
Exit Sub
End If
If Rs.EOF Then
Rs.AddNew
Rs!PName = NameWanted
If Description = "" Then _
Description = InputBox("Describe the picture", _
"Don't care")
'Rs!Description = Description
Else
Rs.Edit
End If
DataFile = 1
Open FileName For Binary Access Read As DataFile
Fl = LOF(DataFile) ' 文件中数据的长度
If Fl = 0 Then Close DataFile: Exit Sub
Chunks = Fl \ ChunkSize
Fragment = Fl Mod ChunkSize
Rs!Photo.AppendChunk Null
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
Rs!Photo.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For I = 1 To Chunks
Get DataFile, , Chunk()
Rs!Photo.AppendChunk Chunk()
Next I
Close DataFile
Rs.Update
End Sub
Private Sub FileName_Change()
Picture1.Picture = LoadPicture(FileName)
End Sub
话说这是从网上拉的哦,不知道能看懂不。。。