- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在Sql Server中存储、读写Word文件,需要将指定表字段添加为Image类型
示例表结构为:
1
CREATE?TABLE?CONTRACTS (
2
????ID?VARCHAR?(50),
3
????CONTRACT_FILE IMAGE
4
);
CONTRACT_FILE字段就是要存储Word文件的字段,在存储前,有一个小插曲,你需要将Word文件转换为byte数组,可参考以下代码实现:
1
//将文件转换为byte数组
2
public?static?byte[] File2Bytes(string?fileName)
3
{
4
?????FileStream fs =?new?FileStream(fileName,FileMode.OpenOrCreate, FileAccess.Read);
5
?????byte[] fileDatas =?new?byte[fs.Length];
6
?????fs.Read(fileDatas, 0, System.Convert.ToInt32(fs.Length));
7
?????fs.Close();
8
?????return?fileDatas;
9
}
接下来就是将转换后的byte[]数组存储到SqlServer的对应字段中,具体实现代码可看如下代码段:
01
//将文件存储到数据库
02
public?bool?UpdateContractFile(string?id,?byte[] fileBytes)
03
{
04
????string?sql =?UPDATE CONTRACTS SET CONTRACT_FILE=@CONTRACT_FILE WHERE ID=@ID;
05
????using?(SqlConnection conn =?new?SqlConnection(this.m_DataAccess.ConnectString))
06
????{
07
????????conn.Open();
08
????????using?(SqlCommand cmd =?new?SqlCommand())
09
????????{
10
????????????cmd.Connection = conn;
11
????????????cmd.CommandText = sql;
12
????????????cmd.Parameters.Clear();
13
????????????cmd.Parameters.Add(new?SqlParameter(@CONTRACT_FILE, SqlDbType.Image));
14
????????????cmd.Parameters[@CONTRACT_FILE].Value = fileBytes;
15
????????????cmd.Parameters.Add(new?SqlParameter(@ID, SqlDbType.VarChar));
16
????????????cmd.Parameters[@ID].Value = id;
17
????????????return?cmd.ExecuteNonQuery() 0 ??true?:?false;
18
????????}
19
????}
20
}
同时,因之前转换了数据类型,所以从数据库中读取Word文件时,要先将Image类型的字段转换为bytes[],代码如下:
01
//通过ID获取文件byte数组
02
public?byte[] GetContractFile(string?id)
03
{
04
????string?sql =?SELECT CONTRACT_FILE FROM CONTRACTS WHERE ID={0};
05
????sql =?string.Format(sql, id);
06
????object?contractFile;
07
????contractFile =?this.m_DataAccess.ExecuteScalar(sql);
08
????if?(contractFile ==?null)
09
????{
10
????????return?new?byte[0];
11
????}
12
????else
13
????{
14
????????return?(byte[])contractFile;
15
????}
16
}
在获取到文件的byte[]后,将该文件再通过文件流存储为Word文件,以下代码可实现此功能:
01
//将byte[]数组存储为Word文件
02
byte[] fileBytes =?this.m_Contract
文档评论(0)