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服务器角色。

  • 相关阅读:
    002. 在HTML页面嵌入循环代码
    001. 为input type=text 时设置默认值
    PHP包名解释
    003. vs2010发布、打包安装程序(转)
    SQL server 2008 Express Edition实现自动备份和自动删除备份
    解决phpMyAdmin中缺少mysqli扩展的错误
    IIS6下PHP环境的资源未找到(404)问题
    解决远程桌面连接过去后是蓝色屏幕问题
    解决tomcat一闪而过问题
    解决访问远程共享时发生 请检查名称的拼写. 否则, 网络可能有问题 故障
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258354.html
Copyright © 2011-2022 走看看