中间层,一个 Database1,其余是 DataSetProvider 和 Query,一个 DataSetProvider 对应一个 Query,客户端 ClientDataSet 对应相应的 DataSetProvider,但是我的中间层函数有点问题,我有一个数据库 A,里面有表 aa,客户端启动,从 aa 里面读取记录,每条记录是一个存在的数据库名,把这些记录显示在 ComboBox 中,然后从 ComboBox 里面选择进入哪个数据库,但是有点问题,找出问题所在,就是不会弄,希望各位指点,下面说说详情:
连接数据库用的就是Database1,但是我要用它连接两次,1、进入数据库A  2、进入相应的数据库  所以中途我要 Database1.close;关键就是在这里,有人曾经说过动态创建 Database1,但是也是要 close 啊,郁闷,请教各位给指点一下

解决方案 »

  1.   

    说错了不要骂我啊:1:   你用两个Database1,刚开始的时候打开第一个,取aa表的内容,发给客户端。2:   当客户端选择了具体的数据库名后,再用第二个Database1来连接就行了。
      

  2.   

    我们公司是用dcom实现的
    应该没什么问题吧
      

  3.   

    其实我想这样子就可以了,用ADOConnection,你刚开始进入数据库AA取得数据库的信息后,再跟据用户选的数据库动态生成数据库连接字符串赋值ADOConnection.ConnectString.如果你用Database1的话原理也是一样的。
      

  4.   

    是啊,上面的人说的都是有点道理,因为这个程序已经正式运行了,小弟我水平有限,因此改不了 ADO 的了,最好在我现有的环境上进行改动,我再说一次:客户端要连接服务器的数据库,中间层只有一个,Database在中间层,客户端每次启动都要访问数据库 A,从 aa 表里面取得记录(这里面的记录就是数据库的名称),但是最重要的一点,每次客户端都要调用中间层的函数来连接数据库,重新选择帐套,也就是说,下面两条是必需的,
    Database1.close;
    Database1.Params.Clear;
    然后重新添加 Database1 的连接信息,大家有没有好的方法,给我出出主意,小弟现在面临很大的困难,哎!工作恐怕也悬了
      

  5.   

    Database1.close;
    Database1.Params.Clear;
    有上面这两条,我的程序就面临很大的问题,下面说说:1、如果只有一个帐套:如果有一个客户端 A 已经登陆的话,这时候 B 也登陆进来,就要执行上面两条,因为 A 是 Database1.Open;所以 A 就会报错,不过如果 B 登陆进来, A 也能照常使用2、如果有多帐套:客户端 A 已经登陆帐套 AA,客户端 B 登陆帐套 BB,上面的错误也避免不了,而且更可怕的是,客户端 A 也已经变成帐套 BB 了,郁闷中,哪位高手愿意帮助我的,我可以给你源码,为了我的这份儿工作,我还要请教大家
      

  6.   

    我做过类似 程序。
    我可以试一试
    把程序发一份(尽快,我最近几天比较空闲),
    [email protected]
    [email protected]
    我尽力!
    有MSN  加我一下 可以探讨一下
      

  7.   

    我想了一下
    给点愚见 (大概的思路 不成熟)
    DatabaseA 建立一个连接 固定为 连接 aa 表  永不关闭
    DatabaseB[30]  一个连接 池的作用每一个 用户登陆 使用一个线程 
    首先 使用DatabaseA连接 选择所要数据库 然后从连接池选用一个没有使用过进行连接  用户退出时释放 连接资源
      

  8.   

    连接多个数据库要用SESSION控件,可以的
      

  9.   

    上面的说的对,你要用TSESSION来连接。
      

  10.   

    麻烦各位大哥看的时候注意一下我的问题,多帐套连接问题,连接都在中间层,而且用的就是一个 Database,要达到的目的为不同的用户能够连接不同的数据库,一个 Database显然不够用,应该怎么样设计最为简便呢,我马上要失去这份工作了,谢谢大家!
      

  11.   

    你的中间层是用activeX dll实现的吧,最好不要在中间层中动态生成database,应该预先生成几个,然后根据帐套的不同,分别配置参数,当然必须要有一个默认的连接。至于客户端则动态clientdataset、socketconntion、datasetprovider都没问题!