讨论主题:
1、将对象变量保存至二进制数组
2、将二进制数组存储到数据库中
3、从数据库中读出此二进制数据并还原成对象变量问题:
1、如何将一个对象变量保存到二进制数组中?
2、从数据库中读出一个以二进制保存的对象变量如何还原?
3、还原后的对象变量是否可以继续正常使用?举例:
现有两个窗体form1、form2,一个类clsPeople、一个ACCESS数据库。
在form1内声明了一个对象变量cPeople为class1的一个实例设置cPeople的属性 .Name="Tom" .Age="22"
form1内的部分代码:
Private cPeople As clsPeopleSet cPeople = New clsPeople
With cPeople
.Name = "Tom"
.Age = "22"
End WithDim bytPeople() As Byte........ '如何将设置好属性的对象变量保存进bytPeople()数组?........ '如何将bytPeople()保存进Access数据库的Company表的People字段(字段类型为OLE对象)?在form2内读出数据库中Company表的People字段,并还原成对象变量,然后使用这个对象变量。form2内部分代码:Private cPeople As clsPeople....... '如何从数据库中读出二进制数据并还原成对象变量cPeople?cPeople = ........'使用这个对象变量debug.Pring cPeople.Name
debug.Pring cPeople.Age
在下实在不材,昨天想了好久都解决不了这个问题,用GOOGLE搜了一下午也没搜到,查了CSDN的帖子也没有发现相关讨论,只好在这里求助各位高级别的VBer,请各位高手们不要吝啬您的才华,在下这里就虚心请教了!!!
1、将对象变量保存至二进制数组
2、将二进制数组存储到数据库中
3、从数据库中读出此二进制数据并还原成对象变量问题:
1、如何将一个对象变量保存到二进制数组中?
2、从数据库中读出一个以二进制保存的对象变量如何还原?
3、还原后的对象变量是否可以继续正常使用?举例:
现有两个窗体form1、form2,一个类clsPeople、一个ACCESS数据库。
在form1内声明了一个对象变量cPeople为class1的一个实例设置cPeople的属性 .Name="Tom" .Age="22"
form1内的部分代码:
Private cPeople As clsPeopleSet cPeople = New clsPeople
With cPeople
.Name = "Tom"
.Age = "22"
End WithDim bytPeople() As Byte........ '如何将设置好属性的对象变量保存进bytPeople()数组?........ '如何将bytPeople()保存进Access数据库的Company表的People字段(字段类型为OLE对象)?在form2内读出数据库中Company表的People字段,并还原成对象变量,然后使用这个对象变量。form2内部分代码:Private cPeople As clsPeople....... '如何从数据库中读出二进制数据并还原成对象变量cPeople?cPeople = ........'使用这个对象变量debug.Pring cPeople.Name
debug.Pring cPeople.Age
在下实在不材,昨天想了好久都解决不了这个问题,用GOOGLE搜了一下午也没搜到,查了CSDN的帖子也没有发现相关讨论,只好在这里求助各位高级别的VBer,请各位高手们不要吝啬您的才华,在下这里就虚心请教了!!!
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
来从内存中拷贝变量到二进制数组?或者先把对象变量以二进制的方式保存到硬盘上的一个文件,然后读取这个二进制文件到二进制数组以便保存进数据库。
用Ini或XML文件,串行化与反串行化吗;读出属性并赋给重新成生的对象可不可以呢?
实际使用中比这个要复杂得多,必须要把对象变量保存起来供其他程序来使用的。而且要保存的对象变量还是设置过属性的
*/
你所要保存的这个对象,和重新生成并初始化的对象的区别,难道不是设置的属性吗?
你写个函数作为类的方法,把所有的属性,生成XML保存就可以了呀
反之,另外一个方法,读出XML标记,重新生成对象,设置属性,怎么不可以呢?
Option ExplicitPublic Function save() As Byte()
Dim PropBag As PropertyBag
Set PropBag = New PropertyBag
Call PropBag.WriteProperty("a", "aaa")
Call PropBag.WriteProperty("b", "bbb")
save = PropBag.Contents
Set PropBag = Nothing
End FunctionPublic Function load(ByRef c() As Byte)
Dim PropBag As PropertyBag
Set PropBag = New PropertyBag
PropBag.Contents = c
MsgBox PropBag.ReadProperty("a")
MsgBox PropBag.ReadProperty("b")
Set PropBag = Nothing
End Function
'调用程序
Dim content() As Byte
Dim a As cc
Dim b As cc
Set a = New cc
content = a.save
Set a = Nothing
Set b = New cc
b.load content
Set b = Nothing