C# 读取mysql blob字段(两种方式)
第一种:使用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)