+ -
当前位置:首页 → 问答吧 → 多数据库连接和切换使用小结

多数据库连接和切换使用小结

时间:2010-09-16

来源:互联网

多数据库连接和切换使用时遇到表前缀问题,找了半天都没有详细说明,看原码

  1. public function switchConnect($linkNum,$name='') {
  2.         if(isset($this->_db[$linkNum])) {
  3.             // 在不同实例直接切换
  4.             $this->db   =   $this->_db[$linkNum];
  5.             // 重置当前表名 可以在切换之前重新设置前缀
  6.             $this->trueTableName  =  '';
  7.             if(!empty($name))   $this->name   =  $name;
  8.             // 更新数据表字段缓存信息
  9.             $this->flush();
  10.             return true;
  11.         }else{
  12.             return false;
  13.         }
  14.     }
复制代码
里面写的“重置当前表名 可以在切换之前重新设置前缀”,但实际应该是在切换后设置。

以下是我自己用的一段模型代码,希望对大家有用。
模型文件:

  1. <?php
  2. import('AdvModel');
  3. class Pay_orderModel extends AdvModel
  4. {
  5. public $MSSQL = array(
  6.   'dbms'     => 'mssql',
  7.   'username' => 'sa',
  8.   'password' => 'sa123',
  9.   'hostport' => '',
  10.   'hostname' => '127.0.0.1',
  11.   'database' => 'chinadb',
  12. );
  13. public function set(){
  14.   $this->addConnect($this->MSSQL,1);
  15.   $this->switchConnect(1);
  16.   $this->trueTableName = 'pay_order';
  17. }
  18. public function close(){
  19.   $this->closeConnect(1);
  20. }
  21. }
  22. ?>
复制代码
使用:

  1. $order = D('Pay_order');
  2. $order->set();
  3. $list = $order->findall();
  4. $order->close();
复制代码
另外再说下MSSQL链接,论坛里问的不少。发现T2.0里MSSQL驱动确实只支持SQL SERVER 2005,对2000无法正常使用,我全用sql语句写了,希望那位能人能给个2000的驱动。

作者: !-_-!   发布时间: 2010-09-16

顶一下

作者: luyanginwuxi   发布时间: 2010-09-16

好帖

作者: yuzhanwei   发布时间: 2011-03-30