使用简单的数据库功能轻松处理Web程序列表数据

ZDNet软件频道 时间:2003-05-22 作者:BUILDER.COM |  我要评论()
本文关键词:
使用各种逻辑来访问数据库都有可能使程序发生混乱。所以,我们应该减少网络程序服务器及数据库之间的关联,减少访问冲突,提高访问速度。
本文译自Builder.com,未经许可请勿转载在以前的程序开发过程中,我曾经需要把一个过时的企业资源计划(ERP)系统转换成为一个基于网络的程序,因为原系统不能正常运行于Windows XP的操作系统。并且原系统也需要被改变成适合于多种用户。对于基于网络程序,我们的开发小组想通过ColdFusion代码把前台的商业逻辑部分转化为可存储的函数功能,并且尽可能地减小对服务器的影响。但是在转换过程中,我们碰到很多麻烦。

经常出现的问题

在转换过程中出现的最大问题是在于列表数据的处理。在程序中有很多检查框,信息表,或者是很多行条款。而且,我们必须通过使用ColdFusion来分离每一行条款并独立地处理,这就意味着,如果有10行条款,就需要建立10个ColdFusion服务器与数据库的ODBC连接,同时需要10个存储程序来处理每一行条款。这就大大地破坏了程序的完整性。如果有一行条款被处理失败,我们必须知道失败的原因并调用一些函数来处理。而在服务器上处理列表的过程意味着程序很不安全。在ColdFusion中处理列表数据的一个方法是,使用cfloop来调用存储函数myStoredProc来循环处理每一行条款,如表A所示。

备用的选项

基于以上的缺点,我列出以下能够解决问题的方法:

  • 尽可能地减少数据库之间的连接
  • 在数据库操作过程中保持完整性
  • 增加重用率

第一种方法的目的就是能够从网络程序服务器取出选项列表而作为一条选项来处理。为了达到这一目的,我们必须建立SQL存储程序来处理单一选项。但这一方法会导致潜在的操作失败。

第二种方法是在网络程序服务器上建立动态的SQL WHERE语句并在一个存储程序中执行。一、使用'adam','bob,'rita'来处理数据列表;二、传递@mylist参数到存储程序并通过WHERE语句来查找每一条选项。  

第三种方法,既然SQL服务器支持用户自定义功能,我们可以建立这样一个过程,当传递一个字符串时,将会调用带有PATINDEX功能的WHILE循环来查找每一条选项,并显示每一条选项的位置。

解决方法

在这里我决定采用第三条选项来解决问题,这一条选项包含了用户自定义功能和可重新使用功能,所以能减少网络程序服务器工作的次数。表B中的源代码建立了SQL服务器2000的用户自定义fn_ListToTable函数,当传递一列表时,这一函数会返回具有两列的一个表格。

  • seqid—连续ID识别列表中任一入口点的位置。
  • entry—当传递时入口点是独立的列表元素。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134