大家知道查询条件是多种多样的
那么如何查询由哪层完成?表现层组合SQL语句? 
  肯定不对业务层组合SQL语句? 
  是不是每个查询都要一个业务组件来实现?举个例子,一个订单列表的报表查询
查询限制条件有日期起始 客户名称 产品分类 业务员....是不是要一个专门的组合去实现这个查询?

解决方案 »

  1.   

    在业务层组织SQL,然后把结果以记录集的形式返回表现层。
      

  2.   

    方法我知道问题是业务层怎么去组织它对于每一个类型的查询都对应一个组件?这样针对查询的组件可能就有无数了像如果我实现了这样的一个类
    CCustomerDAO 
    功能是对数据库进行Find Insert Update Delete操作的那是不是把客户列表显示时的查询功能也加到这个类里面来
    如:
    GetCustomers(CusCls as String,... (限制条件) )还是新建一个类
    专门针对这个客户列表查询的
    返回结果集
      

  3.   

    http://www.ourfly.com/forum/View.aspx?fbId=9&Id=307
      

  4.   

    楼上说的放在表现层是如何在放法表现层涉及到SQL语句么?还是将查询条件传入业务层?业务层是由一个对象统一处理还是每一种查询都有一个对象来完成
      

  5.   

    其实对于查询有时候也要涉及到业务逻辑啊
    甲可以查询,已不能查询,(这个是业务逻辑)
    不过关于SQL语句,我感觉不该算是业务逻辑,
    select a from table这个东西,我们现在开发的
    三层结构中是放到客户段了,中间层提供方法返回
    data,不过我感觉客户段有SQL,就不是很好的,没
    办法老大要这样搞,我们也只能这样搞了!
      

  6.   

    还有就是我封装了一个类,来完成数据库的连接、sql 语句和存储过程的调用并返回相关结果集
    请问这个类是放在数据服务器上还是应用服务器上?而且如果整个局域网有我程序的两个实例在运行
    它们又是连到相同的服务器但是不同的数据库时
    比如一个是连DataServer机器上的A数据库,一个是连DataServer上的B数据库而业务层的组件部署是一样的,假如都是在ApplicationServer机器上
    那么如何控制它们的连接方式呢?这时客户端会有权决定连哪个数据库甚至是哪个Server
    那是不是得客户端在业务层创建一个连接对象
    然后对于每个业务层的处理对象都传递这个连接对象来决定对哪个数据库操作?
    这样也太麻烦了吧
      

  7.   

    还有就是我封装了一个类,来完成数据库的连接、sql 语句和存储过程的调用并返回相关结果集
    请问这个类是放在数据服务器上还是应用服务器上?
    :我觉得是应用服务器,客户端向应用服务器发送请求,应用服务器接收到请求进行处理,连接数据服务器。关于查询的办法,我的做法是这样
    把查询语句做成存储过程放在数据库服务器,然后
    建立一个客户类,然后建立一个客户方法QueryCustomerData调用存储过程返回数据,
    这个客户类放应用服务器,
    客户端可以建立实例,发送查询参数到应用服务器,然后就这样了。呵呵