2013-10-03 79 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)'行,並確保它檢索每組數據。我同意漢斯,我可能不應該嚴格存儲這樣的數據,但數據的性質和它適合表格內容的方式 –