C#数组序列化后存入MySql数据库并反序列化读出

Joooooone 2015-08-04 05:04:08
将数组序列化后作为整体存入MySql数据库的blob字段,再读出之后反序列化解析。写入数据库时一定要用形参(@datatest)传入byte[]
namespace SerializationTest
{
public partial class Form1 : Form
{
BaseClass BaseClass1 = new BaseClass();
public Form1()
{
InitializeComponent();
}
System.IO.MemoryStream ms = new System.IO.MemoryStream();
private void button1_Click(object sender, EventArgs e)
{
double[,] str = new double[,] { { 1.25,3.56,1.28, 5.63},{1.457,0.325,9.24561,154.21546 } };
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(ms, str);
byte[] tableBT = ms.ToArray();
string strsql = "insert into serialization_table(testResult) values(@datatest)";
MySqlParameter par = new MySqlParameter("@datatest", MySqlDbType.Blob);
par.Value = tableBT;
//BaseClass1.execsql(strsql);
string strConn = "Data Source=127.0.0.1;User ID=root;Password=****;Database=serializationtest;";
MySqlConnection Conn = new MySqlConnection(strConn);
MySqlCommand Comm = new MySqlCommand(strsql, Conn);
Comm.Parameters.Add(par);
Conn.Open();
Comm.ExecuteNonQuery();
Conn.Close();
ms.Close();
ms.Dispose();
}

private void button2_Click(object sender, EventArgs e)
{
BinaryFormatter bFormatter = new BinaryFormatter();
string strsql = "select testResult from serialization_table where Id=4";
MySqlDataReader msdr = BaseClass1.readrow(strsql);
byte[] blob = new byte[(msdr.GetBytes(0, 0, null, 0, int.MaxValue))];
msdr.GetBytes(0, 0, blob, 0, blob.Length);
msdr.Close();
ms = new System.IO.MemoryStream(blob);
ms.Position = 0;
double[,] str = (double[,])bFormatter.Deserialize(ms);
ms.Close();
ms.Dispose();
for (int i = 0; i < str.GetLength(0); i++)
{
for (int j = 0; j < str.GetLength(1); j++)
{
MessageBox.Show(str[i, j].ToString());
}
}
}
}
...全文
252 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧