mysql blob读取_C# 读取mysql blob字段(两种方式)
https://blog.csdn.net/weixin_36487445/article/details/113424556读取Blob类型的数据
读取Blob类型相对来说比较容易,当获取了查询的结果集之后,使用getBlob()方法读取到Blob对象,然后调用Blob的getBinaryStream()方法得到输入流,再使用IO操作进行文件的写入操作即可。
第一种:使用MySqlDataReader
while (reader.Read())
{
//读取blob类型的字段
//long len = reader.GetBytes(3, 0, null, 0, 0);//3为blob字段的索引(索引从0开始算)
long len = reader.GetBytes(reader.GetOrdinal("blob字段名"), 0, null, 0, 0);
byte[] buffer = new byte[len];
len = reader.GetBytes(3, 0, buffer, 0, (int)len);
string content = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);
}
第二种:使用DataSet
string sqlDataSet = "SELECT `id`,`name`,`accountBookType`,convert(`binary` using utf8) `binary` FROM temp_imgs_householdid";
DataSet ds = MySqlHelper.GetDataSet(connstr, CommandType.Text, sqlDataSet, null);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow dr = ds.Tables[0].Rows[i];
string content = dr["binary"].ToString();
try
{
File.WriteAllBytes(@"E:\1.jpg", Convert.FromBase64String(content));//将base64转成图片
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
第二种方式,需要注意的是:在sql语句中,需要对blob字段,进行convert(`binary` using utf8)