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)問い合わせの実行に成功すればTRUEを返します。
ExecTuplesOkは、バックエンドサーバへ 問い合わせを送信します。
int PgConnection::ExecTuplesOk(const char *query)問い合わせの実行に成功すればTRUEを返します。
ErrorMessageは最後に出力された エラーメッセージテキストを返します。
const char *PgConnection::ErrorMessage()
Tuplesは、問い合わせ結果のタプル(行)数を返します。
int PgDatabase::Tuples()
Fieldsは問い合わせ結果のタプルに含まれる フィールド(属性)の数を返します。
int PgDatabase::Fields()
FieldNameは与えられたフィールド(属性)の インデックスに対応するフィールド名を返します。 フィールドのインデックスは0から始まります。
const char *PgDatabase::FieldName(int field_num)
FieldNumは与えられたフィールド(属性)名に 対応するフィールドのインデックスを返します。
int PgDatabase::FieldNum(const char* field_name)与えられた名前がどのフィールドとも一致しない場合は-1を返します。
FieldTypeは、与えられたフィールドのインデックスに対応する フィールドの型を返します。返された整数は型に対する内部コードです。
Oid PgDatabase::FieldType(int field_num)
FieldTypeは、与えられたフィールド名に対応する フィールドの型を返します。返された整数は型に対する内部コードです。 フィールドのインデックスは0から始まります。
Oid PgDatabase::FieldType(const char* field_name)
FieldSizeは、与えられたフィールドのインデックスに 対応するフィールドのサイズをバイト数で返します。 フィールドのインデックスは0から始まります。
short PgDatabase::FieldSize(int field_num)タプル内の指定されたフィールド番号に割り当てられた領域のサイズを返します。 つまりこれは、このデータ型のサーバにおけるバイナリ表現のサイズです。 フィールドが可変長の場合は-1を返します。
FieldSizeは、与えられたフィールド名に対応する フィールドのサイズをバイト数で返します。
short PgDatabase::FieldSize(const char *field_name)タプル内の指定されたフィールド名に割り当てられた領域のサイズを返します。 つまりこれは、このデータ型のサーバにおけるバイナリ表現のサイズです。 フィールドが可変長の場合は-1を返します。
GetValueは、PGresultからタプルをひとつ取り、 その中からフィールド(属性)の値をひとつ返します。 タプルとフィールドのインデックスは0から始まります。
const char *PgDatabase::GetValue(int tup_num, int field_num)ほとんどの問い合わせにおいて、GetValueの返す値は属性値をNULL終端の ASCII文字列で表現したものとなります。しかし、BinaryTuples()がTRUEの場合、 GetValueが返す値はバックエンドサーバの内部フォーマットによるバイナリ型表現です。 (ただしフィールドが可変長であっても、そのサイズを示すワードは含まれません) したがって、これを正しいCの型にキャストして変換するのはプログラマの責任です。 GetValueが返すポインタはPGresult構造体の記憶領域の一部ですから、 これを変更してはいけません。もし値をPGresult構造体自身の寿命を超えて 使うのであれば、明示的に別の記憶領域にコピーしなければなりません。 BinaryTuples()はまだ実装されていません。
GetValueは、PGresultからタプルをひとつ取り、 その中からフィールド(属性)の値をひとつ返します。 タプルのインデックスは0から始まります。
const char *PgDatabase::GetValue(int tup_num, const char *field_name)ほとんどの問い合わせにおいて、GetValueの返す値は属性値をNULL終端の ASCII文字列で表現したものとなります。しかしBinaryTuples()がTRUEの場合 GetValueが返す値はバックエンドサーバの内部フォーマットによるバイナリ型表現です。 (ただしフィールドが可変長であっても、そのサイズを示すワードは含まれません) したがって、これを正しいCの型にキャストして変換するのはプログラマの責任です。 GetValueが返すポインタはPGresult構造体の記憶領域の一部ですから、 これを変更してはいけません。もし値をPGresult構造体自身の寿命を 超えて使うのであれば、明示的に別の記憶領域にコピーしなければなりません。 BinaryTuples()はまだ実装されていません。
GetLengthは、フィールド(属性)の長さをバイト数で 返します。タプルとフィールドのインデックスは0から始まります。
int PgDatabase::GetLength(int tup_num, int field_num)これは個々のデータ値に対する実際のデータ長で、GetValueが指す オブジェクトのサイズです。なおASCII表現の値の場合、 このサイズはPQfsizeで得られるバイナリサイズとはあまり関連しませんので、 ご注意下さい。
GetLengthは、フィールド(属性)の長さをバイト数で返します。 タプルとフィールドのインデックスは0から始まります。
int PgDatabase::GetLength(int tup_num, const char* field_name)これは個々のデータ値に対する実際のデータ長で、GetValueが指す オブジェクトのサイズです。なおASCII表現の値の場合、このサイズは PQfsizeで得られるバイナリサイズとはあまり関連しませんので、 ご注意下さい。
DisplayTuplesは、指定された出力ストリームに すべてのタプルと、必要なら属性名も表示します。
void PgDatabase::DisplayTuples(FILE *out = 0, int fillAlign = 1, const char* fieldSep = "|",int printHeader = 1, int quiet = 0)
PrintTuplesは、指定された出力ストリームに、 すべてのタプルと、必要なら属性名も表示します。
void PgDatabase::PrintTuples(FILE *out = 0, int printAttName = 1, int terseOutput = 0, int width = 0)
CmdTuples CmdTuplesは、INSERT、UPDATE、またはDELETEが 実行されて、影響があった行数を返します、それ以外のコマンドが実行された 場合には、-1を返します。
int PgDatabase::CmdTuples()
OidStatus
const char *PgDatabase::OidStatus()
GetLine
int PgDatabase::GetLine(char* string, int length)
PutLine
void PgDatabase::PutLine(const char* string)
EndCopy
int PgDatabase::EndCopy()