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();
}