2

データを格納するために使用されるC#のクラスがあります(構造体など)。メンバーとしてサブクラスがあり、他のサブクラスなどがあります。それぞれにデータが含まれています(さまざまな文字列、整数、浮動小数点数など)

そのような C# オブジェクトをデータベースの 1 つの列に格納する方法はありますか? それはどのような種類の列で、どのように使用できますか?

私が考えることができる唯一のことは、アルゴリズムを使用して構造体をバイト シーケンスに変換し、それをバイナリ型のフィールドに格納することです。

次に、復号化アルゴリズムを使用して元に戻し、再びオブジェクトにします。

それでも、C# ですぐに使用できるアルゴリズムはありますか?

4

2 に答える 2

4

この質問を参照してください 必要に応じて、SQL Server で VARBINARY(MAX) フィールド タイプを使用できます。そこには、最大 2 GB のサイズの任意のタイプのオブジェクトを格納できます。

アクセスするには、次のような ADO.NET を使用できます。

object yourMysteryObject = (whatever you like it to be);

MemoryStream memStream = new MemoryStream();
StreamWriter sw = new StreamWriter(memStm);

sw.Write(yourMysteryObject);

SqlCommand sqlCmd = new SqlCommand("INSERT INTO TableName(VarBinaryColumn) VALUES (@VarBinary)", sqlConnection);

sqlCmd.Parameters.Add("@VarBinary", SqlDbType.VarBinary, Int32.MaxValue);

sqlCmd.Parameters["@VarBinary"].Value = memStream.GetBuffer();

sqlCmd.ExecuteNonQuery();
于 2013-02-10T12:41:42.810 に答える
2

JSON.NET ( http://json.codeplex.com/ ) を使用して、オブジェクトを JSON にシリアル化し、JSON データをデータベースに格納できます。オブジェクトをデータで再水和する必要がある場合、これは JSON.NET で再度行うことができます...

ドキュメントはここにあり、使いやすく、非常に高速です: http://james.newtonking.com/projects/json/help/

于 2013-02-10T12:45:21.210 に答える