zoukankan      html  css  js  c++  java
  • 【原创】9. MYSQL++中的Field、FieldNames以及FieldTypes类型

    mysqlpp::Field其实使用的并不多,主要在于Result.h中ResultBase以及他的派生类型(UseQueryResult和StoreQueryResult)的几个获取下一个field的方法(全部定义在了ResultBase中),主要如下

    image

    mysqlpp::FieldNames的主要作用就是保存FieldNames,他其实就是一个vector<string>的派生类型。

    主要用在了ResultBase以及他的派生类型(UseQueryResult和StoreQueryResult)用于获取Field Names的时候,

    image

    以及mysqlpp::Row中用于SSLQS的equal_list和field_list(这两个方法主要用于产生equal list)

    image

    mysqlpp::FieldTypes用的地方主要在于ResultBase中的types_,他派生自vector<mysql_type_info>

    image

    这个types_主要是用在了获取结果集中指定index的列的属性。

    image

    mysqlpp::Field

    该类型主要被定义在了field.h中。作者说,这是一个对于MYSQL_FIELD类型的不完全包装,主要cut down的是对于一些不太实用的member的访问,同时,在这里,作者也极力避免使用MYSQL C API中所定义的一系列的表示类型的C常量,而是使用mysqlpp::mysql_type_info等进行替代。

    • 成员变量

    image

    从名字上来说,以上变量的作用已经非常明显了。需要说明的是

    1. flags_,他其实就是为了用于表示该Field是否是part of a primary key(primary_key ( )),是否有default value(no_default( ))等特殊属性。

    2. max_length_ 是当前结果集中的数据中该列最大的长度。

    • 成员方法

    其实mysqlpp:: Field类型的成员方法没有太多好讲的,主要就是构造方法。其实也非常简单,就是将MYSQL_FIELD的一些成员属性(请参看http://www.sdau.edu.cn/support/mysq_doc/manual_Clients.html)有针对性的给mysqlpp:: Field赋值。

    image

    最后有一个问题,什么时候构造这个Field的呢?通过上面的分析,我们知道,如果需要获取一个Field,那么久需要在ResultBase的fields_成员变量中获得。所以只需要关心fields_成员变量是如何生成的。

    image

    直接通过DBDriver的fetch_field方法进行获取到一个MYSQL_FIELD*,然后直接就仍改了fields_(fields_是一个Fields类型,他是一个typedef std::vector<Field>)。顺便说一下,DBDriver::fetch_field( )其实就是封装了mysql_fetch_field(或者视传入的参数而调用mysql_fetch_field_direct)这个MYSQL C API。

     

  • 相关阅读:
    jQuery 语法
    jQuery 简介
    把数据存储到 XML 文件
    XML 注意事项
    XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
    通过 PHP 生成 XML
    XML 命名空间(XML Namespaces)
    XML to HTML
    XMLHttpRequest 对象
    使用 XSLT 显示 XML
  • 原文地址:https://www.cnblogs.com/aicro/p/3633510.html
Copyright © 2011-2022 走看看