C#实现SQL Server中存取图片、文件

using System;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using System.IO;


  //将数据写进数据库
  //参数:
  //FilePath    文件路径
  //ConnectionString  连接字符串

  public void SaveDataIntoDatabase(string FilePath,string ConnectionString)
  {

   if(File.Exists(FilePath)==false)
   {
    MessageBox.Show("无法读取文件!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
    return;
   }
                  
   //创建文件对象以打开的形式读取文件
   System.IO.FileStream sFileStream=new System.IO.FileStream(FilePath,System.IO.FileMode.Open);
   //分配数组大小
   byte[] bFile=new byte[sFileStream.Length];
   //将文件内容读进数组
   sFileStream.Read(bFile,0,(int)sFileStream.Length);
   //关闭文件对象
   sFileStream.Close();

   //创建连接
   SqlConnection conn=new SqlConnection(ConnectionString);
   SqlCommand com=conn.CreateCommand();

   com.CommandText="Update 表 Set [图片]=@F Where ID='0001'";
   com.CommandType=CommandType.Text;
   
   SqlParameter sp=new SqlParameter("@F",SqlDbType.Image,bFile.Length,ParameterDirection.Input,false,0,0,null,DataRowVersion.Current,bFile);
   
   com.Parameters.Add(sp);
   com.ExecuteNonQuery();
   conn.Close();
  }


  //从数据库中读取数据
  //参数:
  //FilePath    文件路径
  //ConnectionString  连接字符串

  public void LoadDataFromDatabase(string FilePath,string ConnectionString)
  {
   //判断文件是否已存在.
   if(File.Exists(FilePath)!=true)
   {
    //如存在则删除
    File.Delete(FilePath);
   }

   //创建连接
   SqlConnection conn=new SqlConnection(ConnectionString);
   SqlCommand com=conn.CreateCommand();
   com.CommandText="Select [图片] From 表 Where ID='0001'";
   com.CommandType=CommandType.Text;
   //用DataReader读取数据
   SqlDataReader sR=com.ExecuteReader();
  
   sR.Read();
   //判断是否有记录
   if(sR.HasRows==false)
   {
    sR.Close();
    conn.Close();
    return;
   }
   
   //分配数组大小
   byte[] bFile=new byte[Convert.ToInt32(sR.GetBytes(0,0,null,0,Int32.MaxValue))];
   //将数据读进数组
   sR.GetBytes(0,0,bFile,0,bFile.Length);
   //关闭DataReader
   sR.Close();

   //创建文件对象以创建文件的形式打开文件
   System.IO.FileStream sFileStream=new System.IO.FileStream(FilePath,System.IO.FileMode.Create);
   //将数组的内容写进文件
   sFileStream.Write(bFile,0,bFile.Length);
   //关闭文件
   sFileStream.Close();
  }

posted @ 2008-07-21 10:53  xumingming  阅读(1216)  评论(1编辑  收藏  举报