我們可以輕鬆地將類序列化爲平面文件,但是如果我想將類序列化爲數據庫,那麼我該如何做,如果有可能,那我該如何反序列化數據庫中的數據上課。 請給在c#中的示例代碼。如何將類序列化爲數據庫而不是文件系統c#
感謝
我們可以輕鬆地將類序列化爲平面文件,但是如果我想將類序列化爲數據庫,那麼我該如何做,如果有可能,那我該如何反序列化數據庫中的數據上課。 請給在c#中的示例代碼。如何將類序列化爲數據庫而不是文件系統c#
感謝
與其他人一樣,您可以使用二進制序列化來獲取內存流中的Byte []數組,然後在Blob/image類型的數據庫中創建一個列來存儲字節數組。
然後同時回讀,你就回用技術稱爲反序列化
系列化讀取流中的列的值
BinaryFormatter bf = new BinaryFormatter();
List<SearchFilterDetails> _list = QueryFilterDetails.ToList<SearchFilterDetails>();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, _list);
return ms.GetBuffer();
}
反序列化
private void DeSerilizeQueryFilters(byte[] items)
{
BinaryFormatter bf = new BinaryFormatter();
List<SearchFilterDetails> _list = new List<SearchFilterDetails>();
try
{
using (MemoryStream ms = new MemoryStream())
{
ms.Write(items, 0, items.Length);
ms.Position = 0;
_list = bf.Deserialize(ms) as List<SearchFilterDetails>;
}
foreach (SearchFilterDetails mobj in _list)
{
QueryFilterDetails.Add(mobj);
}
}
catch (Exception ex)
{
}
}
使用二進制序列到BLOB列,或使用XML \數據接觸\淨數據接觸以XML列。
編輯:@Saurabh已經給出的二進制例子。 數據合同示例由Peter Ritchie's blog提供。
序列化對象時,通常會對流進行處理。您可以序列化爲內存流,然後將字節讀回並放入數據庫。
你目前有什麼序列化代碼?最好告訴你如何修改它,而不僅僅是給你完整的代碼。
您可以將一個類(開箱即可)序列化爲二進制形式或XML。
在第一種情況下,您將獲得byte[]
,第二種情況下,您將獲得一個簡單的string
。
如果您想將其保存在數據庫中,請將其作爲任何其他需要發送到數據庫的字節數組或字符串(或XML,如果您的數據庫本地支持)。
托馬斯,你在你的應用程序中使用了什麼樣的數據訪問邏輯?
如果您正在尋找一種與數據庫進行交互並存儲/檢索對象的方法,您還可以看一下實體框架或NHibernate,這樣的ORM允許您關注應用程序中真正重要的內容,以及而不是在加載或保存對象/實體的方式上。
將對象序列化爲XML。嘗試讓數據集從該XML Blob中讀取。 爲數據集中的每個表/行創建一個DB create語句。
你可以序列化/反序列化到任何流 - 基本上你得到的是一堆f字節 - 可以保存在文件或數據庫中(在Sql Server中使用varbinary列,在oracle中使用blob)。 – VinayC 2011-01-19 08:40:46