strSql = "update sc生产制单_报表_款印绣辅图 set 列" + m.ToString() + "=@image where 生产制单号='" + a生产制单.编号 + "' ";
                SqlCommand com2 = new SqlCommand(strSql, clsSql.cn);
                SqlParameter sp2 = new SqlParameter("@image", SqlDbType.Image);
                try
                {
                    Stream ms2 = File.Open(strr列值, FileMode.Open, FileAccess.Read);
                    byte[] b2 = new byte[ms2.Length];
                    ms2.Read(b2, 0, b2.Length);
                    sp2.Value = b2;
                    com2.Parameters.Add(sp2);
                    try
                    {
                        com2.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    ms2.Dispose();
                    com2.Dispose();
                }
                catch (Exception)
                {
                    MessageBox.Show("图片被另一个进程使用. 路径:" + strr列值.Trim());
                    continue;
                }我的源码,怎么改进,以非独占的方式使用图片?

解决方案 »

  1.   

     Stream ms2 = File.Open(strr列值, FileMode.Open, FileAccess.Read);
    这样用只读的方式异常的话
    用这个吧
     StreamReader sr = new StreamReader(xxxx);
      

  2.   

      FileStream _FileStream1 = new FileStream(@"C:\1.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);
               FileStream _FileStream2 = new FileStream(@"C:\1.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);不知道是不是你要的效果
      

  3.   

      FileStream _FileStream1 = new FileStream(@"C:\1.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);
               FileStream _FileStream2 = new FileStream(@"C:\1.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);不知道是不是你要的效果
      

  4.   

    SqlDataReader sqldr = sql_class.GetDataReader("select Photo from tb_GoodsInfo where GoodsId='" + tbxGoodsId.Text.Trim() + "'");
                 sqldr.Read();
                 if (sqldr[0]!=DBNull.Value )
                 {
                      MemoryStream ms = new MemoryStream((byte[])sqldr["Photo"]);
                      pictureBox.Image = Image.FromStream(ms, true);
                 }
                 else
                 {
                     pictureBox.Image=null;
                 }
                     sqldr.Close();  我是这样读取的
      

  5.   

      FileStream fs=new FileStream (openFile.FileName,FileMode.OpenOrCreate,FileAccess.Read);
                    byte[] imgbyte=new byte [fs.Length];
                    BinaryReader br=new BinaryReader(fs);
                    imgbyte=br.ReadBytes(Convert.ToInt32(fs.Length));   
    图片转二进制