合聚咖

合聚咖

vb6.0中rs("照片").AppendChunk Chunk()的意思是什么

admin

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

话说这是从网上拉的哦,不知道能看懂不。。。