2013-04-04 29 views
7

我在這裏回顧了可能的答案(對於PHP,我認爲):http://www.lateralcode.com/store-array-database/但我無法找到C#.net版本的serialize/deserialize。有沒有簡單的方法將數組存儲到SQL Server CE數據庫中的單個列中?

這樣做的方式與我上面鏈接中顯示的方式相同,還是在給定環境的情況下,我應該使用完全不同的方法?

我只是不想在我的9個不同的數組中有12個值的每一列有一堆不同的列,所以如果有另一種方法來實現這一點(轉換爲byte []等)我非常樂意聽到它。

如果它有幫助,數組將是簡單的字符串[]數組。

+0

你爲什麼不乾脆'VAR一個=的string.join(「」陣列);'並存儲在db?並將其取回爲'var arr = a.Split(「,」);' – 2013-04-04 13:57:16

+1

使用該方法更好地使用分隔符,該分隔符不太可能存在於數組中,例如「|||」或類似的東西。 – Vladimirs 2013-04-04 13:59:47

+0

嘗試適應此示例:http://sqlcebulkcopy.codeplex.com – KF2 2013-04-04 14:00:24

回答

6

轉換您的字符串數組轉換成一個String像如下:

var a = String.Join(",",arrays); 

//or aim is to provide a unique separator, 
//i.e which won't be the part of string values itself. 
var a= String.Join("~~",arrays); 

,並把它抓回來是這樣的:

var arr = a.Split(','); 
//or split via multiple character 
var arr = a.Split(new string[] { "~~" }, StringSplitOptions.None); 
+0

您是否可以使用「,」作爲分隔符進行編輯,因爲它們是從用戶輸入存儲的,因爲該值可能很容易是字符串本身的自然文本? – VoidKing 2013-04-04 14:31:55

+0

基本上的想法是以某種方式加入你的字符串,以後你可以很容易地將它拆分爲你的原始字符串數組 – 2013-04-04 14:33:11

+0

對,當然,我明白了,我只是想着未來的觀衆,但我想這是真的如果他們沒有得到他們應該使用他們的字符串值獨特的分隔符,可能沒有幫助他們,無論如何,哈哈。感謝你的回答,現在看起來很明顯,但我知道我必須確保我的回答沒有違反任何最佳做法或任何事情。 – VoidKing 2013-04-04 14:37:08

1

試試這個seralize數組並在Blob類型的數據庫中創建一個列來存儲字節數組。

連載:

if(array == null) 
     return null; 
BinaryFormatter bf = new BinaryFormatter(); 
MemoryStream ms = new MemoryStream(); 
bf.Serialize(ms, array); 

反序列化:

String[] array = new String[10];   
BinaryFormatter bf = new BinaryFormatter();  
ms.Position = 0;   
array = (String[])bf.Deserialize(ms); 
+0

你可以用這種方法展示一個反序列化的例子。另外,可以肯定的是,這個答案可以用於sql-server-ce(使用WebMatrix)嗎? – VoidKing 2013-04-04 14:03:27

+0

終於有機會看看這個。 +1通過序列化/反序列化來完成此操作(連接字符串可能不適用於所有人)。如果我能向我展示我不知道的新方法,我會再給+1。謝謝! – VoidKing 2013-04-05 16:24:12

1

我只是不希望有一堆不同的列的每一個在我的每9個不同陣列的 12個值,所以如果有另一個 方法來實現這一(轉換爲byte [],等等)我比 願意聽到它。

從以上描述中可以看出,您使用的是RDBMS。

事實上,你想在單個列中存儲多個值的問題與設計的尖叫。

我同意有分開的列可能不是要走的路,特別是如果每​​個陣列中的項目數量可能在未來發生變化。

考慮這個數據分離成單獨的表並具有1對多的映射與原來的表的外鍵關係

+0

我想知道我是否忽略了這一點。我知道什麼是一對多的關係,但我從未實踐過這種方法。在這裏展示一個例子(對於未來的觀衆)可能是有益的。考慮到這種情況,這是一個非常好的答案。 – VoidKing 2013-04-10 20:02:05

+0

這篇維基百科的文章解釋瞭如何創建一個外鍵http://en.wikipedia.org/wiki/Foreign_key – alvarorahul 2013-04-10 21:09:21

相關問題