请教各位高手,在C#中怎么将大文件读到数据库中?
如题
问题点数: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




