zoukankan      html  css  js  c++  java
  • 并非万能的XML

    并非万能的XML

    左直拳

    XML是个炙手可热的东西,出来很多年了,好象还听说将取代HTML(不过直到今天HTML1.1还健在,其实我认为两者很大程度上并无可比性)。有一次我去面试,人家问我熟不熟悉XML,答曰不会,结果被“人来落闸放狗”地赶了出来。

    现在我已经在一些地方应用到了XML。众所周知,。NETXML绑得很紧,比如DataSet,比如WEB SERVICE传递的参数以及返回值。做产品介绍类的网站,如果将产品信息存放在XML文件里,因为不必去查询数据库,速度会很快,同时结合XSL,呈现的样式又很灵活,修改也非常方便。另外,我还很喜欢将程序的配置文件写成XML形式,用DataSet可以不写什么代码就能够读出来。

    不过看起来,XML比较适合少量的数据,记录一多,弊端就出来了。之前做的一个网站,需要不定期上传本地系统的数据。采取的办法是本地系统(PB作品)先将数据导出为XML,然后上传此XML文件到网站,读取分析,保存到网站数据库。

    刚开始还未发觉有什么不妥,只是速度慢了一点。直到有一天,客户上传了一个包含3万多条记录的文件,不管重复了多少遍,网页最终还是显示“连接已超时”。其实在网页的服务器端代码里,我已经标上

    Server.ScriptTimeout = 900;

    IIS也已经将网站的连接超时值由120秒设成900秒。

    那个文件并不大,只有2M多一点,不过由于记录短,所以数目比较多,有3万多条。我调试了一下,发觉时间既不是耗在上传上,也不是在更新数据库上,而是在文件读取上。

    这说明,XML的读取效率不高,也许是因为它采取了明文存取的原因吧。

    后来的解决办法是抛弃XML,改用DBF格式,将数据导成DBF文件,然后上传,读取,保存,文件也小,整个过程只须几十秒。

    读入DBF主要是靠SQL SERVER。语句如下:

    string sql = "INSERT INTO " + table_name + " SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=" + DBF文件所在目录 + "','SELECT * FROM [" + DBF文件名 + "]')";

    要执行这条语句,数据库的登录名要具有System.Administrators服务器角色。

  • 相关阅读:
    怎么样通过API函数获取tooltip的内容(请高手帮忙)
    Ajax控件之Accordion控件学习
    C#中结构与类的区别
    C# ref and out 区别
    java 将PDF文件的首页提取为图片
    围住浮动元素(消除浮动)的三种方法
    myeclipse unable to install breakpoint
    C#调用C++编写的COM DLL
    高手教你玩53kf在线客服的指定客服功能
    让IIS支持Flv的详细设置方法
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258354.html
Copyright © 2011-2022 走看看