zoukankan      html  css  js  c++  java
  • C#实现MySQL数据库中的blob数据存储

    1 System.IO.MemoryStream ms = new System.IO.MemoryStream();
     2 private void button1_Click(object sender, EventArgs e)
     3 {
     4 //测试序列化与反序列化
     5 int[] arr = { 1, 2, 3 };
     6 BinaryFormatter bFormatter = new BinaryFormatter();
     7 bFormatter.Serialize(ms, arr);
     8 byte[] byteArr = ms.ToArray();
     9 MessageBox.Show(byteArr.Length.ToString());
    10 MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString);
    11 //string insertStr = "update mm set aa=4,arr=@blobData where aa=4;";
    12 string insertStr = "insert into mm(arr) values(@blobData);";//需要主键设置自增
    13 MySqlParameter par=new MySqlParameter("@blobData",MySqlDbType.Blob);
    14 par.Value=byteArr;
    15 MySqlCommand cmd = new MySqlCommand(insertStr, conn);
    16 cmd.Parameters.Add(par);
    17 try
    18 {
    19 conn.Open();
    20 cmd.ExecuteNonQuery();
    21 ms.Close();
    22 ms.Dispose();
    23 }
    24 catch (Exception ep)
    25 {
    26 MessageBox.Show(ep.Message);
    27 }
    28
    29
    30 }
    31
    32 private void button2_Click(object sender, EventArgs e)
    33 {
    34 BinaryFormatter bFormatter = new BinaryFormatter();
    35
    36 MySql.Data.MySqlClient.MySqlDataReader myData;
    37 MySqlConnection  conn = new MySql.Data.MySqlClient.MySqlConnection(Properties.Settings.Default.MySqlConnectString);
    38 string readStr = "select arr from mm where id =6;";
    39 MySqlCommand cmd = new MySqlCommand(readStr, conn);
    40 try
    41 {
    42 conn.Open();
    43 myData = cmd.ExecuteReader();
    44 if (!myData.HasRows)
    45 {
    46 throw new Exception("没有blob数据");
    47 }
    48 myData.Read();
    49 byte[] blob = new byte[myData.GetBytes(0, 0, null, 0, int.MaxValue)];
    50 myData.GetBytes(0, 0, blob, 0, blob.Length);
    51 myData.Close();
    52 ms = new System.IO.MemoryStream(blob);
    53 ms.Position = 0;
    54 int[] arr = (int[])bFormatter.Deserialize(ms);
    55 ms.Dispose();
    56 string arrStr = null;
    57 for (int i = 0; i < arr.GetLength(0); i++)
    58 {
    59 arrStr += arr[i].ToString()+" ";
    60 }
    61 MessageBox.Show(arrStr);
    62 }
    63 catch(Exception ep)
    64 {
    65 MessageBox.Show(ep.Message);
    66 }
    67
    68 }
  • 相关阅读:
    对用户控件(ascx)属性(property)赋值
    The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
    图片淡入淡出切换效果
    在用户控件(ASCX)创建用户控件(ASCX)
    Login failed for user 'xxx'
    一些较好的书
    儿子购买的书
    怀念以前做网管的日子
    Linux下selinux简单梳理
    Rsync同步时删除多余文件 [附:删除大量文件方法的效率对比]
  • 原文地址:https://www.cnblogs.com/wanghx-0713/p/7879012.html
Copyright © 2011-2022 走看看