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 与えられたフィールドのインデックスに対応するフィールドの型を返します. 返された整数は型に対する内部コードです. フィールドのインデックスは 0 から始まります.
Oid PgDatabase::FieldType(int field_num)
FieldType 与えられたフィールド名に対応するフィールドの型を返します. 返された整数は型に対する内部コードです.
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)
GetLine
int PgDatabase::GetLine(char* string, int length)
PutLine
void PgDatabase::PutLine(const char* string)
OidStatus
const char *PgDatabase::OidStatus()
EndCopy
int PgDatabase::EndCopy()