项目中遇到问题如下:
B/S结构,网络服务器端:ClientDataSet+SocketConnection,应用服务器:
DatasetProvider+Query.
现象:超过一个用户注册后,所有用户的数据集,都被最后最后注册的用户
的数据集所取代,在那些用户的浏览器中(IE6),只显示最后注册的用户从
数据库(orcal 9i)中查询到底数据。
尝试过的解决方法:
为每个用户动态建立不同的ClientDataSet,DatasetProvider,Query,不好使。
在session中寻找储存数据的方法,未果。
目前在尝试用多线程来解决,如果还不行就没招了。
有经验的给个方案,没经验的给出个主意。分数不是问题,只要我有的,
您尽管言声儿。谢谢。

解决方案 »

  1.   

    用 Destroy 模式建立 Web 数据模块/页模块
    WebSnap 本身已经是多线程的
      

  2.   

    TO: hiflower(花)
    不行呀,我的页面中有很多代码要执行。用 caDestroy 属性建立的模块没法运行这些代码,
    因为模块已经 Destroy 了,所以会 "Access Violation".
    看来还得另想办法。不过还是谢谢你。
      

  3.   

    这可能与你的程序有关了。
    还有更简单的方法,每次请求时,都执行:
      ClientDataset.Close;
      ClientDataSet.CommandText:='...';
      ClientDataSet.Open;
      

  4.   

    是不是用websnap的人很少呀,怎么没人来帮忙呢?
      

  5.   

    照我使用的感觉,web application 是单线程的。在每个web moudle中,所有的login用户都
    使用相同的数据。可能必须为每个用户建立单独的线程。
    大侠还没来,自言自语吧。
      

  6.   

    Hello,hiflower,
    我目前的应付办法是,每个用户在从数据库服务器取数前都把clientdataset改
    为自己私有的,其它用户需要时再改回去。权宜之计。
    我的用户注册部分,用户权限管理部分,和session管理部分都是从Borland网站
    下载的代码,看了看就直接用了,没化太多时间仔细琢磨,不过想来也不会有大
    问题。(程序挺简单,没什么出大问题的机会)
    我不知道你是否为每个用户都建立单独的ClientDataSet,DatasetProvider,
    Query。我觉得问题可能不在这里。
    能不能简单介绍一下你的思路和程序结构?
    如果有兴趣就深入讨论一下吧?E-mail: [email protected]
    have a nice day.^_^
      

  7.   

    请参阅 http://expert.csdn.net/Expert/topic/1834/1834425.xml?temp=.6063501好象是类似的问题