`

Ecos 数据库操作

阅读更多

数据库操作类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 是否跳过对于操作表的缓存更新(不明者请勿修改默认值), 默认为false
    resource $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");

返回的的$rs
    Array(
        [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");
返回的$aData
    Array(
        [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_嵌入式操作系统_驱动开发.pdf

    ### eCos嵌入式操作系统设备驱动开发知识点 #### 一、eCos设备驱动程序概述 **1.1 设备驱动程序基础知识** - **1.1.1 概述:** - 设备驱动程序是连接操作系统与物理硬件的桥梁,用于控制硬件设备,并将硬件设备...

    跟我学eCos嵌入式操作系统在SPCE3200上的应用——驱动开发篇V1.0.pdf

    ### eCos嵌入式操作系统在SPCE3200上的应用——驱动开发篇 #### 一、概述 本文档旨在详细介绍eCos嵌入式操作系统在SPCE3200平台上的设备驱动开发方法。SPCE3200是一款由台湾凌阳科技推出的32位嵌入式开发系统,其...

    数据库表,数据库表定义文件及模型命名规则 — ECOS百科全书

    本文将详细介绍ECOS系统中关于数据库表、数据库表定义文件及模型命名规则的相关知识点。ECOS作为一个功能强大的电子商务平台,其数据库设计与管理对于系统的稳定运行至关重要。通过遵循一套统一的命名规则,可以有效...

    开发框架 ecos

    dbeav是ECOS框架中的数据业务引擎,它的主要功能包括数据库操作、业务逻辑处理和数据建模。dbeav的设计理念是将数据库操作与业务逻辑分离,使得开发者能够更专注于业务层的实现,而不必过于关注底层数据操作的细节。...

    ecos_driver 驱动编写

    ### ecos_driver 驱动编写 ...综上所述,eCos中的设备驱动程序编写不仅涉及到硬件知识,还需要对eCos的操作系统原理有一定的了解。通过上述知识点的学习,开发者可以更好地理解和掌握eCos设备驱动程序的开发过程。

    ecos-3.0.zip

    "ecos" 可能是一个开源操作系统、软件框架、开发环境或者是某种特定的计算平台,其具体含义需要根据项目背景来确定。 【描述】中的“备用代码”暗示了这是一个备用或次要的代码存储,可能是为了防止主代码库丢失...

    eCos 驱动程序编写指南

    - **eCos数据库文件**:`.db`文件(如`ecos.db`),用于存储配置信息。 #### 三、字符设备驱动程序 - **结构**:字符设备驱动程序遵循一定的结构,通常包括初始化函数、读写函数等。 - **编写的步骤**:设计驱动...

    MiniGUI 连接SQLite 数据库的编程实现(PDF)

    对于更复杂的数据库操作,可以使用`sqlite3_prepare()`函数将SQL语句编译为预处理语句,再通过`sqlite3_step()`执行该预处理语句,并使用`sqlite3_column_xxx()`函数系列获取查询结果。 #### 四、MiniGUI与SQLite的...

    eCos在ks8695x上的移植源码

    标题中的“eCos在ks8695x上的移植源码”揭示了本文将要讨论的是如何将嵌入式实时操作系统(RTOS)eCos移植到名为ks8695x的处理器平台上。eCos(Embedded Configurable Operating System)是一款开源、可配置的实时...

    嵌入式学习资料之基于eCos系统的SPCE3200中SD卡驱动程序的开发--千锋培训

    最后,将SD卡驱动程序组件包添加到eCos数据库中,意味着在配置环境中使之可用,这样当构建系统时,驱动程序会被自动编译并链接到内核中。一旦完成这个步骤,用户就能通过调用接口函数来直接使用SD卡功能,无需关心...

    ecstore、ecos核心框架中文文档

    4. **数据持久化**:ecos框架提供了灵活的数据存储方案,支持多种数据库如MySQL、Oracle等,同时兼容NoSQL数据库如MongoDB。 **二、核心组件** 1. **订单系统**:ecos框架包含强大的订单处理能力,支持多渠道订单...

    The eCos Component Writer's Guide

    **更新数据库**:更新eCos数据库,以反映最新的配置信息。 #### 四、构建过程 **构建树生成**:构建过程的第一步是生成构建树,即创建所有需要编译的文件的列表。 **配置头文件生成**:根据配置选项生成相应的...

    操作系统概念answer之Special-Purpose_Systems

    8. **实时数据库操作系统**:结合数据库管理功能,用于实时数据处理和分析,如用于电力调度、交通监控等领域的系统。 9. **嵌入式实时操作系统**:结合了嵌入式和实时操作系统的特性,常见于工业自动化和物联网设备...

    EcStore技术白皮书

    EcStore是一个基于Ecos电子商务操作框架的B2C网店系统,它借鉴了Ruby on Rails的开发模式,运用了ORM(对象关系映射)技术。Ecos框架采用模块化开发,提供了丰富的API接口以及与第三方应用插件的无缝对接能力,旨在...

    Redboot2.02的ixp465移植

    Redboot体系结构中,ecos.db数据库文件是核心,其中定义了target和package两种结构体。Target基于不同的开发板存在,每个target由多个package组成。例如,一个针对ixp465开发板的target可能会包括CPU核心、网络接口...

    《嵌入式Linux开发详解——基于EP93XX系列ARM》

    - **eCos基础知识**:本书对eCos操作系统进行了详细介绍,包括其架构、特性以及与其他操作系统的比较。 - **移植与配置**:指导读者如何将eCos操作系统移植到EP93XX平台上,并进行必要的配置以满足特定应用需求。 ...

    嵌入式源代码 很好的应用

    这可能涉及到一个数据库或配置文件,存储各种水果的单价,以便程序在运行时能够读取并应用到计算中。价格计算模块需要考虑到精度问题,确保金额计算无误,同时也要有异常处理机制,以应对未知的水果类型或输入错误。...

    QQ for Linux 1.0 Preview 3.pdf

    mDolphin 2.0的出现,为Linux、uClinux、VxWorks和eCos等操作系统用户提供了一个高效、定制化的浏览体验。 总的来说,这些技术的发展和创新,无论是QQ for Linux的更新,还是其他软件和服务的进步,都在不断推动着...

    05.MiniGUI编程与Sqlite编程

    MiniGUI-Threads模式允许在单个进程中创建多窗口,但所有窗口都在同一地址空间运行,适合于传统嵌入式操作系统如eCos、pSOS和uC/OS-II。而在Linux和uClinux上,也可以选择这种模式。 版本信息: 在案例中使用的是...

Global site tag (gtag.js) - Google Analytics