只要实现序列化/反序列化就可以了,序列内容可以是自定义的字符串格式、XML等等,只要自己生成并能够正确解析即可。 'Class AAA Option ExplicitPublic ID As String Public Name As StringPublic Function Serialize() As String Serialize = ID & "," & Name End FunctionPublic Sub Deerialize(ByVal Serialization As String) Dim a() As String a = Split(Serialization, ",", 2) ID = Val(a(0)) Name = a(1) End Sub'Module Option ExplicitPublic B As New AAASub Main() Dim s As String '序列化 B.ID = 345 B.Name = "anonymous" s = B.Serialize Debug.Print s '可以将 s 存入数据库
'反序列化,s 已经从数据库取得 Set B = New AAA B.Deerialize s Debug.Print B.ID, B.Name End Sub
实际上,任何信息,无非是一系列的 0 和 1. 只要你存入和取出时信息的内容不发生变化,你就可以任何方式保存它。所以,问题仅仅是如何将你的对象复制到一个便于赋值给数据库对象的变量,以及如何在读取时从这样的标量恢复到对象中。CopyMemory 应该是可以利用的工具。
可否提供相关例子
'Class AAA
Option ExplicitPublic ID As String
Public Name As StringPublic Function Serialize() As String
Serialize = ID & "," & Name
End FunctionPublic Sub Deerialize(ByVal Serialization As String)
Dim a() As String
a = Split(Serialization, ",", 2)
ID = Val(a(0))
Name = a(1)
End Sub'Module
Option ExplicitPublic B As New AAASub Main()
Dim s As String
'序列化
B.ID = 345
B.Name = "anonymous"
s = B.Serialize
Debug.Print s '可以将 s 存入数据库
'反序列化,s 已经从数据库取得
Set B = New AAA
B.Deerialize s
Debug.Print B.ID, B.Name
End Sub
然后才能CopyMemory 吧?