int PgDatabase::GetLine(char* string, int length)类似 Unix 系统过程 fgets(3),这个过程拷贝最多 length-1 个字符到字符串 string 里.但是它会象 gets(3) 那样把结尾的换行符转换成一个空字符(null)。
PgDatabase::GetLine 在碰到文件结束时返回 EOF,如果整行都被读取了返回 0,如果缓冲区填满了而还没有遇到结束的换行符则返回 1.
注意,应用程序必须检查新行是否包含单个句点("."),这表明后端服务器已经完成了 copy 命令结果的发送。因此,如果应用预计接收超过 length-1 字符长的行,应用就必须保证仔细地检查PgDatabase::GetLine 的返回值。
PgDatabase::PutLine 发送一个空结尾的 string 到后端服务器。
void PgDatabase::PutLine(char* string)应用必须显式的发送一个句点字符(".")告诉后端它已经完成它的数据发送。
PgDatabase::EndCopy 与后端同步。
int PgDatabase::EndCopy()这个函数等到后端完成 copy(才返回?).你可以在用 PgDatabase::PutLine 向后端发送完最后一个字符串后或者用 PgDatabase::GetLine 从后端获取最后一行字符串后调用它.我们必须调用这个函数,否则后端可能会和前端“丢失同步”。在这个函数返回后,后端就已经准备好接收下一个查询了。
成功时返回 0,否则返回非零值。 一个例子:
PgDatabase data; data.Exec("create table foo (a int4, b char(16), d float8)"); data.Exec("copy foo from stdin"); data.PutLine("3\tHello World\t4.5\n"); data.PutLine("4\tGoodbye World\t7.11\n"); &... data.PutLine("\\.\n"); data.EndCopy();