序列化多维数组

时间:2014-05-13 13:36:51

标签: arrays vb.net serialization multidimensional-array

我有一个vb.net表单,可以接受来自用户的大约50个输入。我需要能够获取该信息并将其存储到数据库中。来自PHP背景我查看了序列化多维数组并将所有字段存储到单个db列中,而不是创建50个db列。

enter image description here

我已成功序列化了字段的arrayList,并且能够将其序列化并反序列化为arrayList。

 Public Function SerializeArraylist(ByVal arraylst As ArrayList) As String
    Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
    Dim mem As New IO.MemoryStream
    bf.Serialize(mem, arraylst)
    Return Convert.ToBase64String(mem.ToArray())
End Function
'Deserialize
Public Function DeserializeArraylist(ByVal arraystring As String) As ArrayList
    Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
    Dim mem As New IO.MemoryStream(Convert.FromBase64String(arraystring))
    Return DirectCast(bf.Deserialize(mem), ArrayList)
End Function

但是我看到了一些重大问题。其中一个非常混乱,并且将信息存储在多维数组中以更好地组织数据会更有意义。我环顾四周,无法找到解决方案。有这个主题:What Class for Serializable Multidimensional Arrays?但我似乎无法将它应用于我的情况。

总而言之,我的最终目标是序列化一个多维数组,我可以存储在数据库中,然后在后面对其进行反序列化。然而,如果有更好的方法来处理这个问题,我总是愿意尝试不同的东西!

1 个答案:

答案 0 :(得分:1)

将所有数据分组到一个列中会非常糟糕。这是使用数据库的错误方法。你真的想要多个表。我们没有完整的截图,但从我们看到的,你需要这样的东西:

  • 引用表,用于将其他人绑在一起。这将包括供应商ID,报价编号等字段
  • QuoteItems或QuoteProducts表,其中表中的每条记录都会存储一个" piece"在报价中。它将包括您的表单中的信息,如Quantity,PricePerPiece,Freight,以及零件号和显示订单/行号等信息。您还需要在此处保留报价表中的关键字段。
  • CustomCharges表。这将包括Quote表中的键和QuoteItems表中的行号,以及ChargeDescription和ChargeAmount字段。或者,可以将这两个字段添加到QuoteItems表中。