需要借用一个C#在SQL2000中上传图片和下载图片的程序,谢谢了。

解决方案 »

  1.   

    将图片转换成二进制
    FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //using System.IO; FileMode.Open, 
                            byte[] picbyte = new byte[fs.Length];
                            BinaryReader br = new BinaryReader(fs);
                            picbyte = br.ReadBytes(Convert.ToInt32(fs.Length));                        string str = "insert into users(PIC) values(@PIC)";
                            SqlCommand com = new SqlCommand(str, con);
                            SqlDataAdapter da = new SqlDataAdapter(com);
                            com.Parameters.Add("@PIC", SqlDbType.Image).Value = picbyte;
    读取图片
    byte[] pic=null;
                string str = "select name from test where id=1";//此处只选取第一张图片
                string strcon = "server= . ;database = test; integrated security=SSPI";
                SqlConnection con = new SqlConnection(strcon);
                con.Open();
                SqlCommand com = new SqlCommand(str,con);
                SqlDataReader dr = com.ExecuteReader();
                while (dr.Read())
                {
                    pic = (byte[])dr.GetValue(0);
                }
                MemoryStream ms = new MemoryStream(pic);
                Image map = Image.FromStream(ms, true);
                pictureBox1.Image = map;
                           
      

  2.   

    /// 向数据库写入图像文件
     
     try
     {
            FileInfo info=new FileInfo(Path);
      //创建一字节数组,用来存储图像文件.(数组的长度是图像文件的长度)
             byte[] Content=new byte[info.Length];
      //打开文件并用他初始化一个文件流对象
      FileStream ImageFileStream=info.OpenRead();
      //将文件内容写入字节数组
      ImageFileStream.Read(Content,0,Content.Length);
            //关闭文件流
      ImageFileStream.Close();
     
      //创建一个Sql命令对象,用来插入记录
      SqlCommand Command=new SqlCommand("INSERT Into Images(Description,ImageFile,ImageSize,ImageType) Values(@Description,@ImageFile,@ImageSize,@ImageType)",this.MySqlCon);
     
      //图像的描述信息
      SqlParameter imageDescriptionParameter=new SqlParameter("@Description",SqlDbType.NVarChar);
      imageDescriptionParameter.Value=this.txtImage.Text;
      Command.Parameters.Add(imageDescriptionParameter);
     
      //图像的数据字节数组
      SqlParameter imageFileParameter=new SqlParameter("@ImageFile",SqlDbType.Image);
      imageFileParameter.Value=Content;
      Command.Parameters.Add(imageFileParameter);
     
      //图像的大小信息
      SqlParameter imageSizeParameter=new SqlParameter("@ImageSize",SqlDbType.Int);
      imageSizeParameter.Value=Content.Length;
      Command.Parameters.Add(imageSizeParameter);
     
      //图像的类型新信息
      SqlParameter imageTypeParameter=new SqlParameter("@ImageType",SqlDbType.NVarChar);
      imageTypeParameter.Value=obj.Extension;
      Command.Parameters.Add(imageTypeParameter);
         
           //打开数据库连接
            this.MySqlCon.Open();
      //执行 Sql 语句
      Command.ExecuteNonQuery();
      //关闭数据库连接
      this.MySqlCon.Close();
     
      MessageBox.Show("图像文件 " + obj.FullName + " 成功上传到数据库!");
      }
      catch(Exception Ezone)
      {
      MessageBox.Show(Ezone.Message);
      }
    /// 从数据库读取图像
      try
      {
      //创建一个Sql命令对象,用来查询记录
      SqlCommand Command=new SqlCommand("select * from Images order by ImageID DESC",this.MySqlCon);
      //打开数据库连接
      this.MySqlCon.Open();
      //执行Sql语句
      SqlDataReader MyReader=Command.ExecuteReader(CommandBehavior.CloseConnection);
     
      MyReader.Read();
      //创建一个内存流对象并用ImageFile字段,ImageSize字段初始化他
      MemoryStream MyMemoryStream=new MemoryStream((byte[])MyReader["ImageFile"],0,Convert.ToInt32(MyReader["ImageSize"]));
      //创建一个 Image 对象,并赋值给 Picture对象的 Image 属性
      this.ImgPictureBox.Image=Image.FromStream(MyMemoryStream);
      //关闭内存流
      MyMemoryStream.Close();
      MyReader.Close();
      }
      catch(Exception Ezone)
      {
      MessageBox.Show(Ezone.Message);
      }
    /////////今天下午刚做的,正好给你看看!!!
      

  3.   

    参考
    http://www.cnblogs.com/cnyyl/archive/2008/08/28/830357.html