数据库操作类base_db_connections(强烈不建议直接调用)

对于数据库的操作, 建议通过model进行处理,.在model的基类中对于数据库的操作会通过dbschema定义文件对操作的信息进行校验并作相关的转义. 如果有特殊需求无法通过model进行处理, 应用本类时请慎重.

本类不允许直接调用, 调用方式可见base_db_model

数据库集群支持本类支持mysql主从数据库, 一主一从, 主数据库为读写, 从数据库只读.规则
1. 通过exec进行处理的通过主数据库服务器
2. 在一次http请求过程中, 使用用select/selectrow/selectlimit/count函数时, 使用从数据库服务器进行处理. 但一旦使用事务, 系统将通过主数据库服务器处理所有数据, 而不再通过从数据库服务器如果想支持一主多从, 需要在config.php中做一点小处理, 把每一台的从数据库服务器的信息放到一个数组中(包括 DB_SLAVE_HOST, DB_SLAVE_USER, DB_SLAVE_PASSWORD, DB_SLAVE_NAME), 然后从数组中按照一定算法随机取出一条数据, 然后依次进行define.

支持多库,

配置

本类的配置在config/config.php内完成

DB_HOST

主数据库HOST

DB_USER

主数据库用户名

DB_PASSWD

主数据库密码

DB_NAME

主数据库库名

DB_SLAVE_HOST

从数据库HOST

DB_SLAVE_USER

从数据库用户名

DB_SLAVE_PASSWORD

从数据库密码

DB_SLAVE_NAME

从数据库库名

DB_PREFIX

表前缀, 默认为sdb_

DB_CHARSET

数据库编码, 默认为utf8

函数接口

exec

执行sql语句

参数:string $sql 需要执行的sql语句bool $skipModifiedMark 是否跳过对于操作表的缓存更新(不明者请勿修改默认值), 默认为falseresource $db_lnk mysql连接标识, 默认为null. 如果设置为null, 系统会根据config.php的配置连接指定服务器的数据库生成
返回:array|false 如果执行成功返回数组array('$rs', '$sql').$rs表示mysql连接标识, $sql代表经过安全处理的sql语句. 如果失败返回false
代码:$item = $this->app->model('item');$rs = $item->db->exec("select * from sdb_ecbook_item");返回的的$rsArray([rs] => Resource id #62[sql] => select * from sdb_ecbook_item)

query

exec的别名函数

select

对数据库表进行select,执行sql语句(只要是正确的sql语句都能执行);

参数:string $sql 正确的sql语句
返回:array   select语句返回数据集, 二维数组. 每行代表一列数据null    insert delete update语句 不管错误还是正确都什么都不返回,如果是正确则会执行
代码:$aData = kernel::database()->select('select * from sdb_ecbook_item');
返回值:Array([0] => Array([item_id] => 0[item_name] => ami[item_subject] => abcde)[1] => Array([item_id] => 1[item_name] => 0642[item_subject] => aaaa))

selectrow

返回单行数据

参数:string $sql sql语句, 不需要包含limit子句
返回:array 返回表单行数据
代码:$item = $this->app->model('item');$aData = $item->db->selectrow("select * from sdb_ecbook_item");
返回的$aDataArray([item_id] => 0[item_name] => ami[item_subject] => abcde)

selectlimit

与select函数差不多, 区别在于, 用selectlimit不必手拼limit

参数:string $sql select的sql语句 integer $limit 取几条数据, 默认为10. 如果$limit为-1, 则表示所有数据integer $offset 偏移量是多少, 默认为0
返回:array 数据集, 二维数组. 每行代表一列数据
代码:$aData = kernel::database()->selectlimit('select * from sdb_ecbook_item',1,2);
返回值:Array([0] => Array([item_id] => 2[item_name] => ww[item_subject] => fsdafasdf))

getRows

通过mysql结果集连接标识, 获取单/多行数据

参数:resource $rs mysql结果集连接标识integer $rows 取几行数据
返回:array 多行数据集
代码:$db = kernel::database();$rs = $db->exec('select * from sdb_ecbook_item');$aData = $db->getRows($rs,2);
返回值:Array([0] => Array([item_id] => 0[item_name] => ami[item_subject] => abcde)[1] => Array([item_id] => 1[item_name] => 0642[item_subject] => aaaa))

count

统计表的数据行数

参数:$sql select sql语句
返回:integer 行数
代码:$num = kernel::database()->count('select * from sdb_ecbook_item');
返回值:3

quote

对准备入数据库表字段的数据做安全转义处理

参数:$string 字符串
返回:$string 转义后的字符串
代码:$aData = kernel::database()->quote('abc"ecos"ab=ab');
返回值:'abc\"ecos\"ab=ab'

lastinsertid

获取最后插入数据库的条目的id号

返回:integer 插入数据库的id号
kernel::database()->lastinsertid();

affect_row

获取之前mysql语句操作所影响的行数

返回:integer 如果成功返回影响的行数, 如果失败返回-1

errorinfo

返回之前mysql语句操作所产生的错误文本信息

返回:string 如果成功返回相应的错误信息, 否则返回空数组''

errorcode

返回之前mysql语句操作所产生的错误号

返回:string 如果成功返回相应的错误号, 否则返回空数组0

beginTransaction

开始事务

返回:bool|resource 如果成功返回mysql连接标识, 失败返回false

commit

事务提交

返回:bool 成功为true, 失败为false

rollBack

事务回滚

Ecos 数据库操作相关推荐

  1. Python的数据库操作(Sqlalchemy)

    ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系.这样,我们要操作数据库,数据库中的表 ...

  2. 便捷,轻巧的Groovy数据库操作

    本文主要介绍Groovy对数据的CRUD操作,熟悉groovy.sql包,测试使用的数据库是H2. 1.数据库连接配置 //数据库连接配置 def db = [url:'jdbc:h2:mem:gro ...

  3. Django模型之数据库操作-查询

    六.数据库操作-查询 6.1基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果.[返回的所有结果是列表] count查询结果数量 ...

  4. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  5. .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...

    ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...

  6. oracle可以面向对象吗,Jbdc助手-数据库操作面向对象的实现(oracle)

    前言: 如果你对hibernate不是那样的推崇,但感觉jdbc的sqlr操作又不是那么OO的话,那么这篇文章可能给能带来或多或少的期望- 在很长的一段时间里,中总感觉应该对sql的操作来实现一种集成 ...

  7. yii mysql数据库操作_Yii2数据库操作常用方法小结

    本文实例讲述了Yii2数据库操作常用方法.分享给大家供大家参考,具体如下: 查询: // find the customers whose primary key value is 10 $custo ...

  8. mfc 访问局域网mysql_数据库操作:MFC连接与MYSQL

    数据库操作:MFC连接与MYSQL mysql 与MFC通常情况下都是用ODBC或者是是ADO相连接,但有点伤 我直接找网上的教程,仿照着进行连接,试了n边还是只能连接上,但无法进行如图读取,写入的操 ...

  9. 数据库操作(使用FMDB)

    iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...

最新文章

  1. java序列化库_java 中序列化(Serializable)
  2. javascript小游戏_javaScript小游戏——网页版别踩白块
  3. 以太坊 node data write error_Node之 创建服务器与客户端
  4. 安装CoreOS到磁盘
  5. java程序员的发展之路和职业规划
  6. python三方库打包项目中_将Python库打包到项目中
  7. 随想录(字节序和位序)
  8. RTOS原理与实现08:存储块实现
  9. 报表性能优化方案之单数据集分页SQL实现层式报表
  10. 结束下面sql块_oracle: PL/SQL基本结构,语法,变量
  11. 基于FPGA的人脸识别
  12. MongoDB可视化管理工具-Robo 3T
  13. SNMP中的MIB是什么?
  14. DirectX12(D3D12)基础教程(十九)—— 多实例渲染
  15. 热点讨论:IT人,40岁以后能干什么?
  16. 【codeforces 894A】QAQ
  17. 宽带服务器盒信号灯红色闪烁,光纤灯红色闪烁怎么解决(图文)
  18. 如何向oracle中导入数据,Oracle导入导出数据库的语法_Oracle_Oracle语法_Oracle数据库_课课家...
  19. 论随机数AC大法(1)
  20. RSPSS重复测量方差分析

热门文章

  1. 房地产CRM实践进入成长期
  2. QEMU + ARMv8 环境搭建
  3. import * as xxx from ‘xxx ’ 与import xxx from ‘xxx’区别
  4. 解决office2010版excel多开自动叠加一个窗口至多个窗口
  5. PCI网卡上扩展ROM编程 1.前言
  6. 计算机依赖英语作文,网络依赖症英语作文 How Will Our Life Go on without Internet?
  7. Kolin 更优雅的封装ProgressDialog
  8. Ubuntu子用户下安装cuda(新)
  9. 如何停止无意义的内耗
  10. 互联网网站架构演进之 58同城前十年架构演进