/// <summary>
/// 保存头像到数据库中去
/// </summary>
/// <param name="MID"></param>
/// <param name="openF"></param>
public void SaveImage(string MID, OpenFileDialog openF)
{
string P_str = openF.FileName;//得到图片的所在路径
FileStream fs = new FileStream(//创建文件流对象
P_str, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);//创建二进制读取器
byte[] imgBytesIn = br.ReadBytes((int)fs.Length);//将流读入到字节数组中
string str = "Data Source=.;Initial Catalog=db_PMS;User ID=sa;pwd=123456";
SqlConnection conn = new SqlConnection(str);
conn.Open();//打开数据库连
stringBuilder strSql = new StringBuilder();//创建字符串构造器
strSql.Append(//附加字符串
"update tb_employee Set employeePhoto=@Photo where employeeID=" + MID);
SqlCommand cmd = new SqlCommand(strSql.ToString(), conn);//创建命令对象
cmd.Parameters.Add("@Photo", SqlDbType.Binary).Value = imgBytesIn;//添加参数
cmd.ExecuteNonQuery();//执行SQL命令
conn.Close();//关闭数据库连接
        }

解决方案 »

  1.   

     FileStream fs = File.OpenRead(strPath);//打开指定地址并读取 文件流
                        byte[] content = new byte[fs.Length];
                        fs.Read(content, 0, content.Length);  //将读取的二进制流用byte数组存储
                        cmd.Parameters.Add("@image", SqlDbType.Image).Value = content;
      

  2.   


    你要重点解释哪一行啊,是文件流读取图片 还是图片传参执行sql语句啊。???
      

  3.   

     //创建文件流对象
            FileStream fs = new FileStream(P_str, FileMode.Open, FileAccess.Read);
            //第一个参数 图片名/路径所在
            //第二个参数 文件模式 当然是打开
            //第三个参数 文件权限 这里取读权限        //三个连在一起就是 对P_str这个(.jpg,.bmp..png)文件打开并读取 读取信息 全在fs里        SqlDbType.Binary;//显然 对应数据库中图片字段的类型 是二进制存储        //所以,fs还得转换下        BinaryReader br = new BinaryReader(fs);//转换后的二进制流信息 由br保管        fs.Length;//也就是你要存储图片的二进制编码的长度.
            byte[] imgBytesIn = br.ReadBytes((int)fs.Length);//将流读入到字节数组中        //然后 最后一步 参数赋值        cmd.Parameters.Add("@Photo", SqlDbType.Binary).Value = imgBytesIn;        //最后执行
            cmd.ExecuteNonQuery();