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 }

上面的几段代码只是核心代码,并不是完整的代码段,用时候要看清,自己再修改下。