2013-04-04 5 views
7

Ich habe mögliche Antworten hier (für PHP, denke ich) überprüft: http://www.lateralcode.com/store-array-database/, aber ich bin nicht in der Lage, eine C# .net Version von serialize/deserialize zu finden.Gibt es eine einfache Möglichkeit, ein Array in einer einzelnen Spalte in einer SQL Server CE-Datenbank zu speichern?

Würde dies genauso gemacht werden wie oben in meinem Link gezeigt, oder gibt es einen völlig anderen Ansatz, den ich angesichts der Umgebung verwenden sollte?

Ich möchte nur nicht eine Reihe von verschiedenen Spalten für jeden der 12 Werte in jedem meiner 9 verschiedenen Arrays haben, also wenn es einen anderen Ansatz gibt, um dies zu erreichen (Umwandlung in Byte [], etc.) Ich bin mehr als willens das zu hören.

Wenn es hilft, werden die Arrays einfache string [] Arrays sein.

+0

warum gehst du nicht einfach 'var a = String.Join („“, Arrays mit); 'und speichert ein in db? und hole es zurück wie 'var arr = a.Split (", ");' –

+1

Bei diesem Ansatz ist es besser, Trennzeichen zu verwenden, die in einem Array-Wert wie "|||" vorkommen können. oder etwas ähnliches. – Vladimirs

+0

Versuchen Sie, dieses Beispiel zu adaptieren: http://sqlcebulkcopy.codeplex.com – KF2

Antwort

6

Konvertieren Sie Ihre String-Array in einzelne String wie unten angegeben:

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); 

und holen es so zurück:

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

Können Sie mit "," als Trennzeichen bearbeiten, da dieser Wert leicht natürlichen Text in den Strings selbst sein könnte, wie sie von Benutzereingaben gespeichert werden? – VoidKing

+0

im Grunde Idee ist, Ihre Saiten in einer Weise, dass Sie später, teilen Sie es leicht, um Ihre ursprüngliche String-Array –

+0

Richtig, natürlich bekomme ich das, ich dachte nur an zukünftige Zuschauer, aber ich nehme an, es ist wahr, dass wenn sie nicht bekommen, dass sie ein Trennzeichen verwenden sollten, das von ihren String-Werten eindeutig ist, dann hilft ihnen wahrscheinlich sowieso nichts, lol. Danke für die Antwort, es scheint jetzt offensichtlich, aber ich wusste, dass ich sicherstellen musste, dass meine Antwort keine Best Practices oder irgendetwas verletzt. – VoidKing

1

Versuchen Sie, das Array zu seralisieren und eine Spalte in der Datenbank vom Typ Blob zu erstellen, um das Bytearray zu speichern.

Serialisierung:

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

Deserialisierung:

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

Können Sie ein Beispiel für die Deserialisierung mit dieser Methode anzeigen? Auch, um sicher zu sein, ist diese Antwort in Ordnung für sql-server-ce (mit WebMatrix) zu verwenden? – VoidKing

+0

Endlich eine Chance, das zu sehen. +1, um dies durch Serialisierung/Deserialisierung zu tun (verkettete Strings funktionieren möglicherweise nicht für alle).Ich würde noch einmal +1 geben, wenn ich neue Methoden zeigen könnte, von denen ich nichts wusste! Vielen Dank! – VoidKing

1

ich einfach nicht wollen, eine Reihe von verschiedenen Spalten für jede der 12 Werte in jedem meiner 9 verschiedenen Arrays haben, also wenn es eine andere Ansatz ist, dies zu erreichen (Umwandlung von [] auf Byte, usw.) Ich bin mehr als bereit, es zu hören.

Aus der obigen Beschreibung sieht es so aus, als ob Sie ein RDBMS verwenden.

Die Tatsache, dass Sie mehrere Werte in einer einzelnen Spalte speichern möchten, schreit ein Problem mit dem Design.

Ich stimme zu, dass separate Spalten möglicherweise nicht der Weg zu gehen, vor allem wenn die Anzahl der Elemente in jedem Array in Zukunft möglicherweise ändern könnte.

Betrachten Sie diese Daten in eine separate Tabelle zu trennen und eine 1 bis viele Mapping mit Ihrem ursprünglichen Tabelle mit einem Fremdschlüssel-Beziehung

+0

Ich fragte mich, ob ich das übersehen würde. Ich weiß, was eine 1 zu viele Beziehung ist, aber ich habe diesen Ansatz nicht so lange praktiziert. Es wäre wahrscheinlich von Vorteil, hier ein Beispiel zu zeigen (für zukünftige Zuschauer). Dies ist eine wirklich gute Antwort in Anbetracht des Szenarios. – VoidKing

+0

Dieser Wikipedia-Artikel erklärt, wie man einen Fremdschlüssel http://en.wikipedia.org/wiki/Foreign_key erstellt – alvarorahul

Verwandte Themen