Skip to content

helpManual dbLink

tolizhan edited this page May 22, 2020 · 8 revisions

数据库连接

内置方法

&of_db::pool($key, $pool = null, $value = null)读取/设置连接池

参数使用
#创建连接池(数组)
 key  : 连接池名称
 pool : 连接参数, 若key已创建过, 便不起作用, 与_of.db 配置结构相同

#读取连接池(null) key : 连接池名称

#查询事务层次(文本), 每开启事务会加一, 完结事务会减一 key : 连接池名称 pool : 固定"level"

#检查连接是否正常(文本) key : 连接池名称 pool : 固定"ping"

#查询事务最终提交状态(文本), 当SQL执行失败, 状态自动改false key : 连接池名称 pool : 固定"state" val : 默认null=读取状态, false=强制最终回滚

#重命名指定连接池(文本) key : 连接池名称 pool : 固定"rename" val : 新连接池名, 若新名已存在, 则会替换

#克隆连接池(文本) key : 连接池名称 pool : 固定"clone" val : 克隆连接池名, 若名称已存在, 会将原连接改名唯一值

#关闭并删除指定连接池(文本) key : 连接池名称 pool : 固定"clean" val : 清理方式, 默认null=全部清理, 1=仅清理事务

对应返回
#创建连接池(数组)
#读取连接池(null)
返回连接池结构, 如果失败则报错并结束脚本

#查询事务层次("level") 不在事务中返回0, 一层事务返回1, ...

#检查连接是否正常("ping") 连接正常返回true, 反之false

#查询事务最终提交状态("state") 最终提交事务true, 反之false

#克隆连接池("clone") 若克隆名已存在, 返回原连接改名的唯一值

  • &of_db::sql($sql, $key = 'default')执行sql语句,根据不同语句返回不同结果

    sqlstring
    一条SQL语句
    keystring
    指定 框架配置['db'] 中的键或者 of_db::pool 设置的键
    <?php
    /**
    
    • 描述 : 执行sql语句,根据不同语句返回不同结果
    •  sql : 字符串 = 执行传入的sql
      
    •        null   = 开启事务, <font color="red">支持嵌套事务</font>
      
    •        true   = 提交事务,
      
    •        false  = 回滚事务, <font color="red">若子事务回滚,则父事务也回滚,而非Savepoint方式</font>
      
    •  key : 连接池区分符, 默认=default
      
    • 返回 :
    •  sql为字符串时 : <font color="red">若SQL执行失败, 则所在的事务最终会回滚</font>
      
    •      存储类,返回三维数组    CALL
      
    •      查询类,返回二维数组    SELECT
      
    •      插入类,返回插入ID      INSERT
      
    •      删改类,返回影响行数    UPDATE
      
    •  sql为其它时 : 成功返回 true, 失败返回 false
      

    */ of_db::sql('SELECT 1 a'); //使用默认连接池查询SQL of_db::sql('SELECT 1 a', 'test'); //使用test连接池查询SQL of_db::sql('/call/SELECT 1 a;SELECT 2 b'); //使用CALL模式,返回三维数组

接口对接

  1. 是通过不同方式连接不同数据的方案
  2. 对接文件存储在 OF_DIR . '/accy/db' 下
  3. 所有对接文件继承 of_db 类
  4. 对接文件可以调用 $this->params 获取连接参数
  5. 对接文件要实现以下方法

abstract protected function _connect();连接到数据库

abstract protected function _close();关闭连接源

abstract protected function _ping();检查连接是否正常, true=已连接, false=未连接

abstract protected function _error(); 读取当前错误,返回 {"code" : 错误编码, "info" : 错误信息, "note" : 详细日志);
在死锁时, 可使用 PROCESS 权限, 将死锁日志记录到"详细日志"中

abstract protected function _affectedRows();查看影响行数

abstract protected function _lastInsertId();获取最后插入ID

abstract protected function _begin();开启事务, 成功返回true, 失败抛出异常

abstract protected function _commit();提交事务

abstract protected function _rollBack();事务回滚

abstract protected function _free();释放内存

abstract protected function _query(&$sql);执行sql语句, 成功返回true, 失败返回false

abstract protected function &_fetch();读取一行数据, 失败返回空数组

abstract protected function &_fetchAll();读取全部数据, 失败返回空数组

Clone this wiki locally