我现在在做一个项目,需要把数据库里的所有数据生成HTML文件,几十万了还好说,但现在是1500多万的数据,真的要崩溃了,我只导出来90多万的数据,1/10都不到,老板天天在催. 代码运行一阵要么是连接超时,要么到后来就是无法打开该页,什么都没了,我想如果不行一次导90万,分多次导,但这也不是个合理的办法,不知道大家可不可以帮我一下,先谢谢了! .cs的代码:http://wap.515game.cn/allhtm.aspx.rar
解决方案 »
- 求ASP.NET访问数据库的公用方法
- 加班!!!!!!加班!!!!!!加班!!!!!!加班!!!!!!!!!!!!!!
- ◆◇◆ 克隆跟创建一个新的对象哪个性能更高?为什么? ◆◇◆
- 在Windows Server 2003 +Visual Studio 2005开发WEB项目时,总出错,不知如何解决!!
- xml数据读取问题大家帮帮忙啊!!!!!!!!!
- Session_End里面执行Server.Transfer()无效吗?
- C#中SQL参数传递问题,急!!!!!!!!!
- Datalist模板列里的TextBox的焦点在Server端验证后的切换问题
- 我想声明一个DATATABLE,在整个页面中引用.怎么做
- 寻找asp.net language 由vb翻译到c#的软件
- 【100】邮箱服务器的配置,解决再追加100,顶者有分
- 问个SQL语句 谢谢及时解答==及时散分
孟老师这样回答
生成的方法这样:test.aspx //具体其他的控制条件自己写
int newsid = Convert.ToInt32(Request.QueryString["id"]);
if(newsid > 9999)
{
Response.Write("正在ok" );
Response.End();
return;
}
Response.Write("正在生成新闻" +newsid.ToString() );
GenerateHtml(newsid );
Response.Write("<script>window.location.href='test.aspx?id=" + (newsid + 1)+ "';</script>");
Response.Flush();
Response.End();
2 a通过iframe框架包含b
3 a中设置初始条件 激活开始事件 在开始事件里写
4 b进行静态输出处理 判断结束条件a.aspx中代码
js:
<script type=text/javascript>
function doCheck(newId) {
//这里可以写代码将当前状态显示在当前页(a.aspx)上 如显示在一个div里 //调用b.aspx执行
document.all('frm').src='b.aspx?id='+newId;
}
</script>C#:
在page_load事件里写
if (Request.QueryString["start"].Equals("1"))
{
//开始
//在此获取或设置初始条件
string id=Request.QueryString["id"];
if (id!=null && id!="")
{
//调用b.aspx执行输出
Response.Write("<script>document.all('frm').src='b.aspx?id="+id+"';</script>");
}
}
start参数可以通过一个开始按钮赋值b.aspx中代码(在page_load事件里)
C#:
string id=Request.QueryString["id"];
if (id!=null && id!="")
{
//输出id的静态页
////////
//判断是否结束 这里设未结束
bool isEnd=false; if (!isEnd)
{
//根据一定规则获取下一个id,这里设id=id+1
int newId=int.Parse(id)+1;
//调用a.aspx中的doCheck()方法
Response.Write("<script>window.parent.doCheck("+newId+");</script>");
}
}
1.winform应该是合适过web,按照你现在的需要需要一次性批量导为html静态文件的需求来说;
2.代码有几个地方需要优化,你的数据很大,SqlDataReader检索是保留连接的那么超时很正常了,可以采用分小步每次读取一范围的数据,例如id为1-100,101-200这样100为单位循环操作;
3.减少一些IO
例如
//读取模板
using(StreamReader sr=new StreamReader(Server.MapPath("Mb.htm"),System.Text.Encoding.UTF8,true))其实你都是同一个模板,为何不暂时存放模板内容起来,例如application["mb_content"]保存起来,一次就ok了
看看这些应用后的效果
if(newsid > 9999)
{
Response.Write("正在ok" );
Response.End();
return;
}
Response.Write("正在生成新闻" +newsid.ToString() );
GenerateHtml(newsid );
Response.Write("<script>window.location.href='test.aspx?id=" + (newsid + 1)+ "';</script>");
Response.Flush();
Response.End();
这样就可以了----------------------------
PS:楼主为什么不换个思路去想呢!
导出数据。导出的最后结果是什么还原对吧!
如果是还原,哎!直接还原mdf.ldf文件
如果说是显示在word上那我没办法!呵呵,鄙视自己下