2013-10-03 80 views
0

我有7个正在写入内存流然后插入到数据库字段的变量序列化类。 7变量都是四个字节,在写入数据库之前,可能会有数百个记录组合在一起。这工作成功。读取内存流

然而,当我得到的数据从数据库中背部和反序列化:

rdr = cmd.ExecuteReader 
    While rdr.Read() 
     arr = rdr("BINPROFILE") 
     ms.Write(arr, 0, arr.Length) 
     ms.Position = 0 
     SER = bf.Deserialize(ms) 
    End While 

我的变量“SER”,这包含7个变量的类的实现,只读取第7个变量。

如何遍历整个内存流并读取其中包含的所有数据?

+0

你想读取流的字节(),字符串? –

+0

您必须反复调用Deserialize()来检索其他的。在dbase中,每个表行不存储* one *对象通常是一个错误。 –

回答

0

SER在循环的每次迭代中被覆盖,只留下来自最后一条记录的值。您需要将这些保存在数组或列表中,或者在循环中处理。

SER = bf.Deserialize(ms) 

这行代码将用一个新值替换SER变量中的所有内容,在您的情况下,这7个变量。

+0

我怀疑我需要为每个28字节的数据块调用Deserialize(),但是如果我将ms.Position移动28个字节,则会出现错误“输入流不是有效的二进制格式”。我无法找到任何关于如何循环访问序列化数据的示例,但我确实复制了三次'SER = bf.Deserialize(ms)'行,并确保它检索每组数据。我同意汉斯,我可能不应该严格存储这样的数据,但数据的性质和它适合表格内容的方式 –