C# MySQL blob数据的显示,更新操作

博客探讨了如何在C#的DataGridView中显示和处理MySQL数据库中的Blob数据,将Blob数据转化为16进制字符串并在界面中显示。同时,介绍了如何更新界面数据并同步回MySQL数据库,特别提到了在新版本MySQL中Hex和Unhex函数的使用变化。博主分享了关键代码片段,包括从Blob到16进制字符串的转换以及反向更新Blob字段的方法。
摘要由CSDN通过智能技术生成

两个层面
第一是C#里面的Datagridview 里面的blog 的获取和更新,第二是 MySQL数据库的更新。

情景简单介绍一下
数据库有一列数据是blob,要把它显示出来,当然是显示原始数据,即16进制数据,然后修改更新。
界面如下
在这里插入图片描述
注意:ABAB是16进制数不是字符串‘ABAB’,希望你能理解。换言之,里面的字母最大到F,不能出现其他比F更大的字母了。

看显示代码的关键语句:


...
     Type tp = dgv.Rows[row].Cells[colName].Value.GetType();
      string colVal = dgv.Rows[row].Cells[colName].Value.ToString();
      if (tp.Name == "Byte[]")// dgv 里面保存的是blob
      {
      //转换显示出来
          Byte[] dat = (Byte[])dgv.Rows[row].Cells[colName].Value;
          colVal = "";
          foreach (byte bt in dat)
          {

              colVal += bt.ToString("X2");
          }

      }
      ctrl.Text = colVal;
...

相反的过程,更新DGV的代码

      if (IsBlobCtrl(ctrl) )//自己写的函数,可以忽略
         {
             string Val = ctrl.Text;
             Byte[] byteArr = new Byte[Val.Length / 2];
             for (int i = 0; i < Val.Length; i += 2)
             {
                 byteArr[i / 2] = Convert.ToByte(Val.Substring(i, 2), 16);
             }
             dr[fieldName] = byteArr;
             continue;
         }

更新mysql的语句比较简单
关键语句如下:

       string Val = ctrl.Text;//注意是16进制字串
       setFields += fieldName + "=unhex('" + Val + "'),\r\n";

说明:Hex()和Unhex函数的功能在新版本中和以前似乎不同,因为本人验证了网友的各种代码,结果都不对。他们的例子似乎是5.x以前的代码。

马拉孙 2021-09-11 于泛五地区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值