--------------------------------
[--PostgreSQL Communicate LIB--]
[VERSION]: 1.1
[AUTHOR] : LeeQ
[EMAIL] : leeproer@hotmail.com
[CREATE] : 2006-10-10
[COPYRIGHT BY AUTHOR]
--------------------------------
PGCom接口手册 V1.1
作者:李强
日期:2006-10-12
头文件PGCom.h
//--------------------------------------------------------------------------------------------------------------
公共接口函数原型与调用说明
{建议构造实体对象而不使用指针对象,实体对象释放时所有的数据池空间将自动释放,如使用指针对象请注意销毁对象指针}
//--------------------------------------------------------------------------------------------------------------
[构造函数]
PGCom();
<说明>
调用方已经取得数据库连接,仅使用此库中的功能来简化数据库操作。
PGCom(const string &strUsername, const string &strPassword, const string &strDBname);
<说明>
由库提供数据库连接。
<参数>
strUsername :数据库连接用户名
strPassword :数据库连接密码
strDBname :数据库名称
[功能函数]
void version();
<说明>
将打印库版本信息到标准输出。
void setCommit(const bool b_auto);
<说明>
是否执行SQL完成后自动提交(或回滚)执行结果。
设置为自定义时可调用sql_commit()函数自定义提交(或回滚)执行结果。
此状态开关将一直作用下次设置之前。
<参数>
b_auto :true 自动执行(默认) false 自定义执行
void setLog(const bool b_log);
<说明>
日志开关函数,调用SQL是否记录文件。
文件将记录在可执行文件运行目录,文件名为pgcom.log。
此状态开关将一直作用下次设置之前。
在客户程序完成以后可以在调用前设置为关闭以日志。
<参数>
b_log :true 记录日志(默认) false 关闭记录
void setDebug(const bool b_debug);
<说明>
依据setLog开关设置记录执行SQL语句
是否执行SQL完成后自动记录执行结果,
如果执行成功则不记录日志文件,
执行失败将记录如右日志格式:[执行时间]<错误代码>{执行语句}
若设置为true则将所有执行SQL记录到日志文件。
此状态开关将一直作用下次设置之前。
<参数>
b_debug :true 记录所有 false 仅记录出错SQL(默认)
const string sql_insert(const string &strSQL);
<说明>
数据库插入数据操作。
<参数>
strSQL :由关键字insert组成的SQL语句。
<返回>
执行结果代码 SQLCA.SQLSTATE
const string sql_delete(const string &strSQL);
<说明>
数据库删除数据操作。
<参数>
strSQL :由关键字delete组成的SQL语句。
<返回>
执行结果代码 SQLCA.SQLSTATE
const string sql_update(const string &strSQL);
<说明>
数据库更新数据操作。
<参数>
strSQL :由关键字update组成的SQL语句。
<返回>
执行结果代码 SQLCA.SQLSTATE
const string sql_select(const string &strSQL);
<说明>
数据库查找数据操作。
查询结果将存放于类似于图标的数据池中,此数据池将在下一次查询前清空。
->不支持select * from ... 的模糊字段查询。凡是复合字段请使用别名(as),并且别名与“,”之间不要有空格,所有查询字段与“,”之间都不能有空格。<-
<参数>
strSQL :由关键字select组成的SQL语句。
<返回>
执行结果代码 SQLCA.SQLSTATE
void sql_commit();
<说明>
自定义提交(或回滚)操作函数。
const long getColCount();
<说明>
获取查询结果的列数。
<返回>
列数
const long getRowCount();
<说明>
获取查询结果的行数。
<返回>
行数
const string fetchField(const long col);
<说明>
获取查询结果列名。
<参数>
col :列号。
<返回>
字段名称
const string fetchData(const string &strFieldname, const long row);
<说明>
获取查询结果数据元。
<参数>
strFieldname : 字段名称
row : 数据行号
<返回>
数据元
const string fetchData(const long col, const long row);
<说明>
获取查询结果数据元。
<参数>
col : 列号
row : 行号
<返回>
数据元
//--------------------------------------------------------------------------------------------------------------
示例源码 pgrun.cpp
//--------------------------------------------------------------------------------------------------------------
// FILE : pgrun.cpp
// AUTH : LeeQ
// DATE : 2006-10-10 22:22
// MAIL : leeproer@hotmail.com
// DESC : pgcom lib main example program.
#include <string>
#include "pgcom.h"
using namespace std;
int main(int argc, char *args[])
{
PGCom pgc("", "", "pgdb");
string strSQL = "", strFlag = "";
if(argc != 2)
{
printf("Error parameter /nUSAGE: pgrun [insert|delete|update|select|version]");
return -1;
}
if(strcmp(args[1], "version") == 0)
{
//version display
pgc.version();
}
else if(strcmp(args[1], "insert") == 0)
{
//insert example
strSQL = "insert into tb_user(name, age) values('pgrun', 10)";
strFlag = pgc.sql_insert(strSQL);
}
else if(strcmp(args[1], "delete") == 0)
{
//delete example
strSQL = "delete from tb_user where name = 'newpgrun'";
strFlag = pgc.sql_insert(strSQL);
}
else if(strcmp(args[1], "update") == 0)
{
//update example
strSQL = "update tb_user set name = 'newpgrun' where name = 'pgrun'";
strFlag = pgc.sql_update(strSQL);
}
else if(strcmp(args[1], "select") == 0)
{
//select example
strSQL = "SELECT NAME, AGE FROM tb_user";
strFlag = pgc.sql_select(strSQL);
printf("COL[%d]ROW[%d]/n", pgc.getColCount(), pgc.getRowCount());
for(int i = 0; i < pgc.getColCount(); i++)
{
printf("%6s", pgc.fetchField(i).c_str());
}
printf("/n");
for(int m = 0; m < pgc.getRowCount(); m++)
{
for(int n = 0; n < pgc.getColCount(); n++)
{
printf("%6s", pgc.fetchData(n, m).c_str());
}
printf("/n");
}
}
else
{
printf("No this parameter [%s]/n", args[1]);
return 0;
}
printf("SQLSTATE [%s]/n", strFlag.c_str());
return 0;
}
//--------------------------------------------------------------------------------------------------------------
编译指令
g++ -I[头文件路径] -L[库文件路径] -lpgcom -o pgrun pgrun.cpp
//--------------------------------------------------------------------------------------------------------------