0
データベースからオブジェクトを保存および取得します。私はC#のコードを以下のように保存するように書いて、うまくいきました。これで、オブジェクトをデータベースに保存できます。SQL Serverデータベースに保存されたバイナリからC#オブジェクトを取得します。
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();
SQL Serverデータベースには、すでにReportObject
のC#オブジェクトが保存されています。私はそれをC#オブジェクトに戻したいと思います。
string sql = "SELECT [Object] FROM [TemplateDetails]"
SqlDataReader dr = db.Reader(sql);
if (dr.Read())
{
byte[] arrays = (byte[])dr["Object"];
}
代わりにバイナリシリアル化を使用してください。 –
'StreamWriter.Write(Object)'はオブジェクトの 'ToString()'メソッドを呼び出します。型名以外のものを返すようにオーバーライドしましたか? – Amy
@Amyいいえ、私はToString()をオーバーライドしませんでした –