大家帮我看看,把WORD文件以二进制的形式保存到数据库存出错?

时间:2022-10-18 21:45:02
我有个64K的WORD文档,现在要把它放到数据库里.这是在SQL2000里我用的字段
字段名为:doc_file
类型是:varBinary
长度为:8000
但是我在程序里先把文档转换为二进制形式,再提交到数据库里,但每次都显示overLoad.
是不是我什么地方弄错了呀.在数据库存里,二进制的长度最长为:8000.  但是我这个64K的word文档转换为二进制为:64000.这样肯定存不进出,但有什么方法解决呀.
程序代码如下:
SqlConnection conn = new SqlConnection("Server=127.0.0.1;uid=sa;pwd=123456;database=train");
string sql="select * from test1";
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
SqlCommandBuilder MyCB = new SqlCommandBuilder(sda);
DataSet ds = new DataSet("DocFile");


string filePath=Path.GetDirectoryName(Application.ExecutablePath)+@"\File\ExamPaper.doc";
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read);

byte[] MyData= new byte[fs.Length];
fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
sda.Fill(ds,"DocFile");

DataRow myRow;
myRow=ds.Tables["DocFile"].NewRow();
myRow["doc_file"] = MyData;
ds.Tables["DocFile"].Rows.Add(myRow);
sda.Update(ds, "DocFile");

conn.Close();
MessageBox.Show ("文件保存到数据库存成功");

11 个解决方案

#1


使用IMAGE字段

#2


如楼上为正解,

另外,你的代码中
类型是:varBinary
长度为:8000
你可以自己算一下,8000字节是多少,不到8K,怎么会存下你的64K的文件呢?

#3


To:hdt(倦怠) 
我现在也把字段类型改成Image类型了,它的长度怎么改都是16,现在用上面的代码保存还是存不进去,还是显示overload.是我的代码有问题吗?
随便问一下,如果我把这个WORD文件保存到数据库后,我再把它读出来,怎么把二进制数据还原成WORD文档?

#4


自己顶一下.

#5


没人知道?大家帮帮忙吧.

#6


up

#7


up

#8


自己再顶一下吧

#9


我知道用网页打开怎么做,现在我也在找从WinForm中直接保存的做法/

#10


我晕哟,现在问题解决了,原来是我数据库我设计表时,把ID哪个字段没有设置成自动增长.所以就存不到数据库里去.

#11


用image字段,参考一下www.cnblogs.com/yistudio

#1


使用IMAGE字段

#2


如楼上为正解,

另外,你的代码中
类型是:varBinary
长度为:8000
你可以自己算一下,8000字节是多少,不到8K,怎么会存下你的64K的文件呢?

#3


To:hdt(倦怠) 
我现在也把字段类型改成Image类型了,它的长度怎么改都是16,现在用上面的代码保存还是存不进去,还是显示overload.是我的代码有问题吗?
随便问一下,如果我把这个WORD文件保存到数据库后,我再把它读出来,怎么把二进制数据还原成WORD文档?

#4


自己顶一下.

#5


没人知道?大家帮帮忙吧.

#6


up

#7


up

#8


自己再顶一下吧

#9


我知道用网页打开怎么做,现在我也在找从WinForm中直接保存的做法/

#10


我晕哟,现在问题解决了,原来是我数据库我设计表时,把ID哪个字段没有设置成自动增长.所以就存不到数据库里去.

#11


用image字段,参考一下www.cnblogs.com/yistudio