database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Files 6652 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 6652
[8.1.3] VC6.0 초간단 예제
작성자
김대현(duckking)
작성일
2006-04-27 19:06ⓒ
2006-12-08 15:20ⓜ
조회수
9,723

[QnA]에 환경설정 부분은 설명을 드렸는데,

구체적인 예제도 하나 정도 있으면 좋겠다는 생각에 하나 올립니다.

 무지 하게 허접합니다.

 단지 참고용으로만 사용하시기를...


 >>> 환경설정 <<<
우선 환경설정을 하셔야 컴파일이 됩니다.

 간략히 설명드리자면,

[Tools] -> [Options] -> [Directories] 에서

에 PostgreSQL에서 사용하는

경로를 포함시키셔야 합니다.

 제 경우에는

C:\PROGRAM FILES\POSTGRESQL\8.1\INCLUDE

C:\PROGRAM FILES\POSTGRESQL\8.1\LIB\MS

 그리고 마지막으로 C:\PROGRAM FILES\POSTGRESQL\8.1\bin

디렉토리의 dll 파일들을 전부 Windows\system32 디렉토리에

복사하셔야 합니다.

 이것으로 사용가능한 설정은 완료가 됩니다.

파일 업로드가 되질 않아서..
그냥 소스체로 올립니다.^^ 지송 ^^

-------------------------------------------------------------
[PgDb.h]

#pragma comment (lib, "libpq.lib")
#include "libpq-fe.h"

class CPgDb 
{
public:
 CPgDb();
 virtual ~CPgDb();

public:
 BOOL Connect(char *szConn);
 void Disconnect();

 int  ExecDB(char *szSql);
 int  SelectDB(char *szSql);
 void GetErrMsg(char *szMsg);
 void ClearDB();
 void FinishDB();

public:
 PGresult* m_pRes;

private:
 BOOL  m_bConnected;
 PGconn*  m_pConn;
};


[PgDb.cpp]

#include "PgDb.h"

CPgDb::CPgDb()
{
 m_pConn = NULL;
 m_pRes = NULL;
 m_bConnected = FALSE;
}

CPgDb::~CPgDb()
{
 Disconnect();
}


BOOL CPgDb::Connect(char *szConn)
{
 char szMsg[255];
 
 m_pConn = PQconnectdb(szConn);
 if (PQstatus(m_pConn) != CONNECTION_OK)
 {
  GetErrMsg(szMsg);
  FinishDB();
  m_bConnected = FALSE;
 }
 else
  m_bConnected = TRUE;

 return m_bConnected;
}

void CPgDb::Disconnect()
{
 if (m_bConnected == TRUE)
 {
  FinishDB();
  m_bConnected = FALSE;
 }
}

int CPgDb::ExecDB(char *szSql)
{
 int   nRet;

 m_pRes = PQexecParams(m_pConn, szSql, 0, NULL, NULL, NULL, NULL, 0);

 nRet = PQresultStatus(m_pRes);
 ClearDB();

 return nRet;
}

int CPgDb::SelectDB(char *szSql)
{
 m_pRes = PQexecParams(m_pConn, szSql, 0, NULL, NULL, NULL, NULL, 0);

 return ( PQresultStatus(m_pRes) );
}

void CPgDb::GetErrMsg(char *szMsg)
{
 sprintf(szMsg, "%s", PQerrorMessage(m_pConn));
}

void CPgDb::ClearDB()
{
 PQclear(m_pRes);
}

void CPgDb::FinishDB()
{
 PQfinish(m_pConn);
}

// 실제로 사용하는 부분
[Exam.cpp]

void CTt1Dlg::OnButtonConnect()
{
 // TODO: Add your control notification handler code here
 char szConn[255];
 char szMsg[255];

 sprintf(szConn, "%s", "user=postgres dbname=postgres");
 
 if (!db.Connect(szConn))
 {
  db.GetErrMsg(szMsg);
  AfxMessageBox(szMsg);
 }
}

void CTt1Dlg::OnButtonDisconnect()
{
 // TODO: Add your control notification handler code here
 db.Disconnect();
}

void CTt1Dlg::OnButtonSelect()
{
 // TODO: Add your control notification handler code here
 int nRet;
 char szSql[1024];
 char szMsg[255];
 
 sprintf(szSql, "%s", "select * from pg_tables");
 
 nRet = db.SelectDB(szSql);
 if (nRet != PGRES_TUPLES_OK)
 {
  db.GetErrMsg(szMsg);
  db.ClearDB();
  db.Disconnect();
  AfxMessageBox(szMsg);

  return;
 }

 int  i, j, nFields;
 CString strMsg;

 nFields = PQnfields(db.m_pRes);

 for (i = 0; i < nFields; i++)
  strMsg.Format("[%s]::", PQfname(db.m_pRes, i));

 m_strLine.Empty();
 m_strLine += strMsg;
 m_strLine += "\r\n";

 for (i = 0; i < nFields; i++)
  m_strLine += strMsg;
 m_strLine += "\r\n";

 for (i = 0; i < PQntuples(db.m_pRes); i++)
 {
  for (j = 0; j < nFields; j++)
  {
   strMsg.Format("%-15s", PQgetvalue(db.m_pRes, i, j));
   m_strLine += strMsg;
  }
  m_strLine += "\r\n";
 }

 db.ClearDB();

 UpdateData(FALSE);
}
-------------------------------------------------------------------

이 글에 대한 댓글이 총 1건 있습니다.

 

방가~~

올려주신 소스를 보니 심플한게 가슴에 팍 와닿네요.

혹시 libpq*.* 올려주시면 안될까요?

다른님이 올려놓은 걸로 하니 에러 나네요

그럼 수고욤

신기루(doubler)님이 2006-06-05 19:58에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7001DBExpress driver for PostgreSQL 0.0.5
최정대
2007-01-11
11915
6827PgAdmin III 메뉴의 한글 번역 파일
강혜원
2006-09-12
16126
6767PostgresSQL 8.1.3 한글 번역 문서 [4]
강혜원
2006-07-07
10908
6652[8.1.3] VC6.0 초간단 예제 [1]
김대현
2006-04-27
9723
6138win32 용 libpq.dll libpq.lib libpqdll.lib 파일 [1]
유형목
2005-06-08
11263
5909PostgreSQL용 jsboard (적수보드) 2.0.10
장현성
2005-02-18
9469
58168.0 win32 용 pgcrypto.dll
김상기
2005-01-20
8571
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다