2023年6月21日发(作者:)
•
在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 {
FileStream fs
4 = new FileStream(fileName,Create,
);
5 byte[] fileDatas = new byte[];
(fileDatas, 0,
6
32());
7 ();
8 return fileDatas;
9 }
•
接下来就是将转换后的byte[]数组存储到SqlServer的对应字段中,具体实现代码可看如下代码段:
01 //将文件存储到数据库
02 public bool UpdateContractFile(string id, byte[] fileBytes)
03 {
string sql = "UPDATE CONTRACTS SET
04
CONTRACT_FILE=@CONTRACT_FILE WHERE ID=@ID";
using (SqlConnection conn
05
= new SqlConnection(this.m_tString))
06 {
07 ();
08 using (SqlCommand cmd = new SqlCommand())
09 {
10 tion = conn; 11 dText = sql;
12 ();
1 (new SqlParameter("@C3 ONTRACT_FILE", ));
1 ters["@CONTRACT_FILE"].Value =
4 fileBytes;
1 (new SqlParameter("@I5 D", r));
16 ters["@ID"].Value = id;
return eNonQuery() >
17
0 ? true : false;
18 }
19 }
20 }
•
同时,因之前转换了数据类型,所以从数据库中读取Word文件时,要先将Image类型的字段转换为bytes[],代码如下:
01 //通过ID获取文件byte数组
02 public byte[] GetContractFile(string id)
03 {
string sql = "SELECT CONTRACT_FILE FROM CONTRACTS WHERE
04
ID='{0}'";
05 sql = (sql, id);
06 object contractFile;
07 contractFile = this.m_eScalar(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_tractFile(id); 03 if ( == 0)
04 {
05 ror("未找到合同文件!");
06 return;
07 }
08 SaveFileDialog sfd = new SaveFileDialog();
09 = "Word文件(*.doc)|*.doc";
10 if (alog() == )
11 {
12 try
13 {
14 string saveFileName = me;
15 int arraysize = new int();
16 arraysize = erBound(0);
FileStream fs = new FileStream(saveFileName,
17
Create, );
18 (fileBytes, 0, arraysize);
19 ();
if (estion("文件存储成功,是否20
立即打开文件?") ==
21 )
22 {
23 (saveFileName);
24 }
25 }
26 catch (Exception ex)
27 {
28 ror("操作失败!");
29 }
•
上面的几段代码只是核心代码,并不是完整的代码段,用时候要看清,自己再修改下。
2023年6月21日发(作者:)
•
在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 {
FileStream fs
4 = new FileStream(fileName,Create,
);
5 byte[] fileDatas = new byte[];
(fileDatas, 0,
6
32());
7 ();
8 return fileDatas;
9 }
•
接下来就是将转换后的byte[]数组存储到SqlServer的对应字段中,具体实现代码可看如下代码段:
01 //将文件存储到数据库
02 public bool UpdateContractFile(string id, byte[] fileBytes)
03 {
string sql = "UPDATE CONTRACTS SET
04
CONTRACT_FILE=@CONTRACT_FILE WHERE ID=@ID";
using (SqlConnection conn
05
= new SqlConnection(this.m_tString))
06 {
07 ();
08 using (SqlCommand cmd = new SqlCommand())
09 {
10 tion = conn; 11 dText = sql;
12 ();
1 (new SqlParameter("@C3 ONTRACT_FILE", ));
1 ters["@CONTRACT_FILE"].Value =
4 fileBytes;
1 (new SqlParameter("@I5 D", r));
16 ters["@ID"].Value = id;
return eNonQuery() >
17
0 ? true : false;
18 }
19 }
20 }
•
同时,因之前转换了数据类型,所以从数据库中读取Word文件时,要先将Image类型的字段转换为bytes[],代码如下:
01 //通过ID获取文件byte数组
02 public byte[] GetContractFile(string id)
03 {
string sql = "SELECT CONTRACT_FILE FROM CONTRACTS WHERE
04
ID='{0}'";
05 sql = (sql, id);
06 object contractFile;
07 contractFile = this.m_eScalar(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_tractFile(id); 03 if ( == 0)
04 {
05 ror("未找到合同文件!");
06 return;
07 }
08 SaveFileDialog sfd = new SaveFileDialog();
09 = "Word文件(*.doc)|*.doc";
10 if (alog() == )
11 {
12 try
13 {
14 string saveFileName = me;
15 int arraysize = new int();
16 arraysize = erBound(0);
FileStream fs = new FileStream(saveFileName,
17
Create, );
18 (fileBytes, 0, arraysize);
19 ();
if (estion("文件存储成功,是否20
立即打开文件?") ==
21 )
22 {
23 (saveFileName);
24 }
25 }
26 catch (Exception ex)
27 {
28 ror("操作失败!");
29 }
•
上面的几段代码只是核心代码,并不是完整的代码段,用时候要看清,自己再修改下。
发布评论