天天看点

文件保存到数据库/从数据库读出写成文件

一、保存文件到数据库中。

    将文件保存到数据库中,实际上是将文件转换成二进制流后,将二进制流保存到数据库相应的字段中。(在SQL Server中该字段的数据类型是Image,在Access中该字段的数据类型是OLE对象,在ORCLE中是BLOB类型。

 //保存文件到数据库中

 FileInfo fi=new FileInfo(fileFullPath);

 FileStream fs=fi.OpenRead();

 byte[] bytes=new byte[fs.Length];

 fs.Read(bytes,0,Convert.ToInt32(fs.Length));

 数据库字段.Value=bytes;  

二、将文件从数据库中读出

 IDataReader dr="数据库保存文件字段数据"

 byte[] File=null; 

 if(dr.Read())

 {

  File=(byte[])dr[0];

 }

 FileStream fs;

 FileInfo fi=new System.IO.FileInfo(fileFullPath);

 fs=fi.OpenWrite();

 fs.Write(File,0,File.Length);

 fs.Close();

上面的代码是将保存在数据库中的文件读取出来并保存文指定的文件中。

注意:

 将读文件的下面部分的代码

 FileStream fs;

 FileInfo fi=new System.IO.FileInfo(fileFullPath);

 fs=fi.OpenWrite();

 fs.Write(File,0,File.Length);

 fs.Close();

修改为

 FileStream fs=new FileStream(fileFullPath,FileMode.CreateNew);

 BinaryWriter bw=new BinaryWriter(fs);

 bw.Write(file,0,file.Length);

 bw.Close();

 fs.Close();

这样修改后,就可以解决另存为相应的文件时,用相应的软件不能打开的问题。