C#实现在Sql Server中存储和读取Word文件
2013-07-25 10:10
579 查看
要实现在Sql Server中实现将文件读写Word文件,需要在要存取的表中添加Image类型的列,示例表结构为:
要将Word文件存储到数据库的CONTRACT_FILE字段中,需要将文件转换为byte数组,具体代码如下:
然后将转换完成的byte[]存储到数据库的对应字段:
要读取数据库中存储的Word文件,需要先将Image类型的字段转换为bytes[],具体代码如下:
在获取到文件的byte[]后,将该文件通过文件流操作存储为Word文件,具体代码如下:
CREATE TABLE CONTRACTS ( ID VARCHAR (50), CONTRACT_FILE IMAGE );
要将Word文件存储到数据库的CONTRACT_FILE字段中,需要将文件转换为byte数组,具体代码如下:
将文件转换为byte数组 /// <summary> /// 将文件转换为Bytes /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static byte[] File2Bytes(string fileName) { FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read); byte[] fileDatas = new byte[fs.Length]; fs.Read(fileDatas, 0, System.Convert.ToInt32(fs.Length)); fs.Close(); return fileDatas; }
然后将转换完成的byte[]存储到数据库的对应字段:
将文件存储到数据库 /// <summary> /// 更新合同文件 /// </summary> /// <param name="id"></param> /// <param name="fileBytes"></param> /// <returns></returns> public bool UpdateContractFile(string id, byte[] fileBytes) { string sql = "UPDATE CONTRACTS SET CONTRACT_FILE=@CONTRACT_FILE WHERE ID=@ID"; using (SqlConnection conn = new SqlConnection(this.m_DataAccess.ConnectString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = sql; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter("@CONTRACT_FILE", SqlDbType.Image)); cmd.Parameters["@CONTRACT_FILE"].Value = fileBytes; cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar)); cmd.Parameters["@ID"].Value = id; return cmd.ExecuteNonQuery() > 0 ? true : false; } } }
要读取数据库中存储的Word文件,需要先将Image类型的字段转换为bytes[],具体代码如下:
通过ID获取文件byte数组 /// <summary> /// 获取合同文件 /// </summary> /// <param name="id"></param> /// <returns></returns> public byte[] GetContractFile(string id) { string sql = "SELECT CONTRACT_FILE FROM CONTRACTS WHERE ID='{0}'"; sql = string.Format(sql, id); object contractFile; contractFile = this.m_DataAccess.ExecuteScalar(sql); if (contractFile == null) { return new byte[0]; } else { return (byte[])contractFile; } }
在获取到文件的byte[]后,将该文件通过文件流操作存储为Word文件,具体代码如下:
将byte[]数组存储为Word文件 byte[] fileBytes = this.m_ContractsBusiness.GetContractFile(id); if (fileBytes.Length == 0) { XMessageBox.ShowError("未找到合同文件!"); return; } SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Word文件(*.doc)|*.doc"; if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { string saveFileName = sfd.FileName; int arraysize = new int();//注意这句话 arraysize = fileBytes.GetUpperBound(0); FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate, FileAccess.Write); fs.Write(fileBytes, 0, arraysize); fs.Close(); if (XMessageBox.ShowQuestion("文件下载成功,是否立即打开文件?") == System.Windows.Forms.DialogResult.Yes) { Process.Start(saveFileName); } } catch (Exception ex) { XMessageBox.ShowError("下载文件失败!"); }
相关文章推荐
- [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)
- 点滴积累【C#】---C#实现上传word将路径保存到数据库,文件保存到服务器。并且按照名称读取服务器的word
- 点滴积累【C#】---C#实现上传word以流形式保存到数据库和读取数据库中的word文件。
- C#简单实现读取txt文本文件并分页存储到数组
- C#简单实现读取txt文本文件并分页存储到数组
- 也说C#实现对Word文件读写
- C#实现Word中表格信息读取
- c#上传文件并将word pdf转化成txt存储并将内容写入数据库
- C#实现XML文件数据库存储
- C# 读取txt文件存储在String数组中
- 最好是给一个实例 c#怎么样 读取word文件
- C#读取文件高效方法实现
- C#.NET实现Word或Excel文件转为HTML文件
- C#实现Word中表格信息读取
- C#实现对Word文件读写
- java 在MySQL中存储文件,读取文件(包括图片,word文档,excel表格,ppt,zip文件等)
- 利用Minidx Extract-Text Com组件从Word,Xls,Pdf……等文件中读取 后附C# 调用代码
- C#使用XmlEDocument实现数据文件安全存储功能
- C# 实现wav 文件读取并绘制波形图
- 转载:C#实现对Word文件读写