CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

请教各位高手,在C#中怎么将大文件读到数据库中?

楼主jisen(亲密爱人)2005-11-03 17:57:26 在 .NET技术 / ASP.NET 提问

如题  
  问题点数:50、回复次数:15Top

1 楼moodboy1982(老鹰)回复于 2005-11-03 18:13:37 得分 5

你所说的大文件是指服务器上的文件还是客户端的文件?Top

2 楼moodboy1982(老鹰)回复于 2005-11-03 18:14:45 得分 0

不知这个是不是你想要的:http://support.microsoft.com/kb/309158/zh-cnTop

3 楼jisen(亲密爱人)回复于 2005-11-03 18:21:24 得分 0

我已经上传到服务器   上了   !现在就是想把大文件(服务器   上)写入数据库   .Top

4 楼jisen(亲密爱人)回复于 2005-11-03 19:15:47 得分 0

没有人顶阿   !Top

5 楼yumei20001(纳兰一笑)回复于 2005-11-03 19:21:14 得分 5

我想问你Excel文件你怎么上传到服务器的指定目录下?Top

6 楼hchxxzx(NET?摸到一点门槛)回复于 2005-11-03 19:47:46 得分 20

请参考如下代码,这是一个将文件写入到数据库blob字段的代码。  
   
  写入数据库  
   
  //上传  
  if(myFile.ContentLength   !=   0)  
  {  
    try  
    {  
      System.Web.HttpPostedFile   myFile   =   this.Request.Files[0];  
  //        string   tmpFileName   =   myFile.FileName;  
  //        string   myFileName   =   tmpFileName.Substring(tmpFileName.LastIndexOf("."));  
  //        string   myFileMimeType   =   myFile.ContentType();  
  //        myFile.SaveAs(this.Server.MapPath("../"   +   myFileName));  
   
      //读取到数组里面  
      System.IO.Stream   mystream   =   myFile.InputStream;  
      byte[]   Buffer   =   new   byte[myFile.ContentLength];  
      mystream.Read(Buffer,0,myFile.ContentLength);  
   
      //打开数据库  
      OracleConnection   cn   =   new   OracleConnection(ConfigurationSettings.AppSettings["sysDSN"]);  
      cn.Open();  
   
      //用参数方式写入数据库  
      OracleCommand   myComm   =   cn.CreateCommand();  
      string   sql   =   "insert   into   tmp(tmp_id,tmp_blob)   values(tmp_seq.nextval,:tmp_blob)";  
      myComm.CommandText   =   sql;  
      myComm.Parameters.Add(":tmp_blob",OracleType.Blob,Buffer.Length).Value   =   Buffer;  
      myComm.ExecuteNonQuery();  
    }  
    catch  
    {  
      //此处可加错误显示  
    }  
    finally  
    {          
      cn.Close();  
    }  
  }Top

7 楼renyu732(Sysinfo)回复于 2005-11-03 19:53:19 得分 5

http://support.microsoft.com/kb/309158/zh-cnTop

8 楼jisen(亲密爱人)回复于 2005-11-03 20:03:03 得分 0

hchxxzx(NET?摸到一点门槛),  
  //得到该图片的二进制流  
  FileStream   Fs   =   new   System.IO.FileStream(Path,System.IO.FileMode.Open);  
  System.IO.BinaryReader   Br   =   new   System.IO.BinaryReader(Fs);  
  byte[]   curImage   =   Br.ReadBytes((int)Fs.Length);  
   
  OdbcCommand   Com   =   new   OdbcCommand(Sql,Con);  
  OdbcParameter   ParaImage   =   new   OdbcParameter("@BGWD",OdbcType.Image);  
  ParaImage.Value   =   curImage;  
  Com.Parameters.Add(ParaImage);  
  Com.ExecuteNonQuery();  
   
  可文件太大,报错!Top

9 楼jisen(亲密爱人)回复于 2005-11-03 20:03:51 得分 0

文件在150兆左右!Top

10 楼jxufewbt(我的目标是5星)回复于 2005-11-03 20:13:05 得分 5

hchxxzx(NET?摸到一点门槛)   的方法可行Top

11 楼jisen(亲密爱人)回复于 2005-11-03 20:15:46 得分 0

那为什么我的办法不可以呢?Top

12 楼jisen(亲密爱人)回复于 2005-11-03 20:21:32 得分 0

高手哪里去了?    
  Top

13 楼jisen(亲密爱人)回复于 2005-11-03 20:33:36 得分 0

Writetext   tablename.fname   @Pointer   @binarydata中的   参数代表什么意思?Top

14 楼hchxxzx(NET?摸到一点门槛)回复于 2005-11-03 21:58:18 得分 5

文件这么大,出错的可能性太多。  
  比如,你的上传设置有无设置允许如此大的文件上传?如果没有,在上传过程中就终结了,等不到写入数据库  
  比如,你的数据库表空间设置的剩余空间还有多大?如果表空间只剩余100M,当然写不了这么大  
  比如,如果表空间满了,那么,你的增长步长是多少?假设增长设置得太小,也会出现类似错误。  
  最后,建议不要将这么大的文件写到数据库中,应该写在硬盘上。Top

15 楼Tony_lau111082(刘寓)回复于 2005-11-03 22:04:56 得分 5

大容量这样读取肯定出错  
   
  要分块读取。  
   
  每次读取1M左右入库  
   
  用textcopy  
   
  Top

相关问题

  • 如何用C++ Builder保存bmp文件进数据库中去??
  • HELP ME,c能调用数据库文件?
  • 如何在c#中用程序生成access数据库文件?????
  • 怎样用c#建立一个新的Access数据库文件
  • C#中将图片文件保存到数据库的例子
  • C# winform中如何使用.DB或.DBF 的文件数据库
  • 请问大家用c#怎么创建Access数据库文件?
  • C#+ACCESS数据库存取二进制文件
  • 如何用C#来实现自已的文件数据库
  • 文本文件导入ORACLE数据库,用C#代码实现

关键词

  • 数据库
  • 文件
  • 服务器
  • 写入
  • paraimage
  • myfile
  • tmpfilename
  • 读取
  • contentlength
  • blob

得分解答快速导航

  • 帖主:jisen
  • moodboy1982
  • yumei20001
  • hchxxzx
  • renyu732
  • jxufewbt
  • hchxxzx
  • Tony_lau111082

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo