[英]Retrieve C# object from binary that saved in SQL Server database
I want save and retrieve an object from a database. 我想保存并从数据库中检索对象。 I write C# code to save it as below, and it worked fine.
我编写C#代码将其保存如下,并且工作正常。 Now I can save an object into the database.
现在,我可以将一个对象保存到数据库中。
ReportObject ro = new ReportObject()
{
Name = ctrl.Name,
BackColor = ctrl.BackColor,
ForeColor = ctrl.BackColor,
Fonts = ctrl.Font,
TypeofControl = ctrl.GetType()
};
MemoryStream memStream = new MemoryStream();
StreamWriter sw = new StreamWriter(memStream);
sw.Write(ro);
string sql = "INSERT INTO [TemplateDetails] ([Object]) VALUES (@Object)";
SqlCommand cmd = new SqlCommand(sql, con, tran);
cmd.Parameters.Add("@Object", SqlDbType.VarBinary, Int32.MaxValue);
cmd.Parameters["@Object"].Value = memStream.GetBuffer();
cmd.ExecuteNonQuery();
I am already saved a C# object ReportObject
in SQL Server database. 我已经在SQL Server数据库中保存了一个C#对象
ReportObject
。 I want to retrieve it back to a C# object. 我想将其检索回C#对象。
string sql = "SELECT [Object] FROM [TemplateDetails]"
SqlDataReader dr = db.Reader(sql);
if (dr.Read())
{
byte[] arrays = (byte[])dr["Object"];
}
I Solved problem myself. 我自己解决了问题。 first Serialize to a byte array and save in database.
首先序列化为字节数组并保存在数据库中。
enter ReportObject ro = new ReportObject()
{
Name = ctrl.Name,
BackColor = ctrl.BackColor,
ForeColor = ctrl.BackColor,
Fonts = ctrl.Font,
TypeofControl = ctrl.GetType()
};
MemoryStream memorystream = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(memorystream, ro);
byte[] yourBytesToDb = memorystream.ToArray();
after retrieving from the database as a byte array. 从数据库中检索为字节数组之后。 Deserialize and convert to object.
反序列化并转换为对象。
MemoryStream memorystreamd = new MemoryStream(arrBytes);
BinaryFormatter bfd = new BinaryFormatter();
ReportObject deserializedReportObject = bfd.Deserialize(memorystreamd) as ReportObject;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.