两个层面 第一是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[]")
{
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;
setFields += fieldName + "=unhex('" + Val + "'),\r\n";
说明:Hex()和Unhex函数的功能在新版本中和以前似乎不同,因为本人验证了网友的各种代码,结果都不对。他们的例子似乎是5.x以前的代码。
马拉孙 2021-09-11 于泛五地区
|