#ifndef CIVPGCONN_H
#define CIVPGCONN_H

#include "CivDbConn.h"
#include <libpq-fe.h>


/**
 postgress 数据库
*/
class DBEXPORT CivPgConn: public CivDbConn
{
public:
	CivPgConn(char* uri);
	~CivPgConn();

private:
	/**
	*@brief 连接数据库，与具体的数据有关子类实现
	*/
	virtual bool open();

	/**
	*@brief 关闭数据库连接，与具体的数据有关子类实现
	*/
	virtual void close();
	/**
	 *@brief 获取管网的所有表，与具体数据库相关，子类实现
	 *@netName: 管网名
	 */
	virtual Tables getTables(StrQuote netName, StrQuote schema);

	/**
	*@brief 判断某张表是否存在，判断方法跟具体的数据库有关，延迟到子类实现
	*@tableName: 表名称
	*/
	virtual bool tableExist(StrQuote tableName);

	/**
	*@brief 执行sql语句
	*@sql: 需要执行的sql语句
	*/
	virtual bool execSql(Str sql);

	/**
	*@brief 清除查询结果集数据
	*/
	virtual void clearResult();

	/**
	 *@brief 从查询集取出数据
	 *@result: 查询结果集
	 *@comp: 数据容器
	 */
	virtual void getData(Componets& comp);

private:
	PGconn* mConn;
	PGresult* mResult;

	char* mUri;
};

#endif // !CIVPGCONN_H
