您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

3.5. 查询执行函数

3.5.1. 主要的过程

  • Exec 向后端服务器发送一条命令。可能我们更愿意使用下面两个函数之一。

    ExecStatusType PgConnection::Exec(const char* query)

    返回命令的结果。可能的状态结果可以是下面的值:

    PGRES_EMPTY_QUERY
    PGRES_COMMAND_OK ,如果命令不是一条查询
    PGRES_TUPLES_OK ,如果查询成功返回元组
    PGRES_COPY_OUT
    PGRES_COPY_IN
    PGRES_BAD_RESPONSE ,如收到一个未知的响应
    PGRES_NONFATAL_ERROR
    PGRES_FATAL_ERROR

  • ExecCommandOk 向后端服务器发送一条非查询命令(不返回行的命令)。

    int PgConnection::ExecCommandOk(const char *query)

    如果命令查询成功则返回真 (1)。

  • ExecTuplesOk 向后端服务器发送一条查询命令(返回行的命令)。

    int PgConnection::ExecTuplesOk(const char *query)

    如果命令查询成功则返回真(1)。

  • ErrorMessage 返回最后一条错误信息文本。

    const char *PgConnection::ErrorMessage()

3.5.2. 检索 SELECT 结果信息

  • Tuples 返回查询结果里元组(行)的条数。

    int PgDatabase::Tuples() const

  • Fields 返回查询结果里每条元组的数据域(字段)数。

    int PgDatabase::Fields()

  • FieldName 返回与指定域编号相联的域(字段)名称。域编号从 0 开始计数。

    const char *PgDatabase::FieldName(int field_num) const

  • FieldNum 返回与指定域(字段)名称相联的域编号。

    int PgDatabase::FieldNum(const char* field_name) const

    如果给出的名称无法与任何域匹配返回 -1。

  • FieldType 返回与给出域编号相联的域类型。 返回的整数是该类型的内部编码。域编号从 0 开始计算。

    Oid PgDatabase::FieldType(int field_num) const

  • FieldType 返回和给定域名字关联的域的类型.它返回的整数是该类型的内部编码.

    Oid PgDatabase::FieldType(const char* field_name) const

  • FieldSize 返回与给出域编号相联域的以字节计算的尺寸。域编号从 0 开始计算。

    short PgDatabase::FieldSize(int field_num) const

    返回在数据库元组里面给该数据域分配的空间, 换句话说就是该数据类型在服务器里的二进制形式的大小(尺寸). 如果该数据域是可变尺寸,返回 -1.

  • FieldSize 返回与给出域名称相联的域的以字节计算的尺寸。域索引从 0 开始计数。

    short PgDatabase::FieldSize(const char *field_name) const

    返回在数据库元组里面给该数据域分配的空间, 换句话说就是该数据类型在服务器里的二进制形式的大小(尺寸). 如果该数据域是可变尺寸,返回 -1.

3.5.3. 检索 SELECT 结果数值

  • GetValue 返回 PGresult 里面的一条元组的单独的一个数据域(字段)的值. 元组和数据域编号从 0 开始.

    const char *PgDatabase::GetValue(int tup_num, int field_num) const

    对大多数查询而言, GetValue 返回的值是一个表示字段值的空(NULL)结尾的字符串. 但是如果 BinaryTuples() 为真, GetValue 返回的值就是该类型在后端服务器内部的二进制表现形式 (但是不包括尺寸字--如果数据域是变长的). 这样,把数据转换成正确的 C 类型就是程序员的责任了. GetValue 返回的指针指向一个本身是 PGresult 结构的一部分的存储区域.我们不能对其做修改, 并且如果我们要在 PGresult 结构的生存期后还要使用它的话, 我们必须明确地把该数值拷贝到其他存储器中. BinaryTuples() 还没有实现。

  • GetValue 返回一个 PGresult 里面的一条元组的单独的一个数据域(字段)的值. 元组和数据域编号从 0 开始.

    const char *PgDatabase::GetValue(int tup_num, const char *field_name) const

    对大多数查询而言, GetValue 返回的值是一个表示字段值的空(NULL)结尾的字符串. 但是如果 BinaryTuples() 为 TRUE, GetValue 返回的值就是该类型在后端服务器内部的二进制表现形式 (但是不包括尺寸字--如果数据域是变长的). 这样,把数据转换成对应的 C 类型就是程序员的责任了. GetValue 返回的指针指向一个本身是 PGresult 结构的一部分的存储区域. 我们不能对其做修改, 并且如果我们要在 PGresult 结构的生存期后还要使用它的话, 我们必须明确地把该数值拷贝到其他存储器中. BinaryTuples() 还没有实现。

  • GetLength 返回以字节计的数据域(字段)的长度.元组和数据域编号从 0 开始.

    int PgDatabase::GetLength(int tup_num, int field_num) const

    这是某一特定数据值的实际数据长度,也就是由 GetValue 指向的对象的尺寸. 注意,对于字符代表的数值, 这个尺寸与 PQfsize 报告的二进制尺寸没什么关系.

  • GetLength 返回以字节计的数据域(字段)的长度.元组和数据域编号从 0 开始.

    int PgDatabase::GetLength(int tup_num, const char* field_name) const

    这是某一特定数据值的实际数据长度,也就是由 GetValue 指向的对象的尺寸. 注意,对于这个用字符代表的数值,它与 PQfsize 报告的二进制尺寸没什么关系.

  • GetIsNull 返回一个字段是否有空值.

    bool GetIsNull(int tup_num, int field_num) const

    请注意 GetValue 将为空字段返回空字串, 而不是 NULL 指针.

  • GetIsNull 返回一个字段是否有空值.

    bool GetIsNull(int tup_num, const char *field_name) const

    请注意 GetValue 将为空字段返回空字串, 而不是 NULL 指针.

  • DisplayTuples 向指定输出流打印所有元组和(可选的)字段名。

    void PgDatabase::DisplayTuples(FILE *out = 0, bool fillAlign = true, 
    const char* fieldSep = "|",bool printHeader = true, bool quiet = false) const

    这个函数已经废弃了.

  • PrintTuples 向指定输出流打印所有元组和(可选的)字段名。

    void PgDatabase::PrintTuples(FILE *out = 0, bool printAttName = true, 
    bool terseOutput = flase, bool fillAlign = false) 

    这个函数已经废弃了.

3.5.4. 检索非-SELECT 结果信息

  • CmdTuples 返回在一次 INSERT UPDATE DELETE 后涉及的行数. 如果是其他命令,返回 -1.

    int PgDatabase::CmdTuples() const

  • OidStatus

    const char *PgDatabase::OidStatus() const