vc通过libpq方式连接postgresql

PGresult   *res;
m_conn
= PQsetdbLogin("127.0.0.1","5432","","","postgres","postgres","123");
PQsetClientEncoding(m_conn,
"GBK");
if (PQstatus(m_conn) != CONNECTION_OK)
{
CString strErr;
strErr.Format(_T(
"连接数据库失败 [%s]"),CString(PQerrorMessage(m_conn)));
AfxMessageBox(strErr);
return;

}
////事务
res = PQexec(m_conn, "BEGIN");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
CString strErr;
strErr.Format(_T(
"执行事务失败 [%s]"),CString(PQerrorMessage(m_conn)));
PQclear(res);
AfxMessageBox(strErr);
return;
}
DWORD dwbegin
= ::GetTickCount();
for (int i = 0;i<TESTCOUNT;i++)
{
CTime tim
=CTime::GetCurrentTime();
CString str
=tim.Format("%Y-%m-%d-%M-%S");//显示年月日
CStringA str1(str);
char pSql[200];
memset(pSql,
0,sizeof(pSql));
sprintf(pSql,
"INSERT INTO table1(test1, test2) VALUES ('%s我', '%s')",str1,str1);
PGresult
*result = PQexec(m_conn, pSql);
if (PQresultStatus(result) != PGRES_COMMAND_OK)
{
CString strErr;
strErr.Format(_T(
"执行语句失败 [%s]"),CString(PQerrorMessage(m_conn)));
AfxMessageBox(strErr);
PQclear(result);
return;
}
}

res
= PQexec(m_conn, "END");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
CString strErr;
strErr.Format(_T(
"连接数据库失败 [%s]"),PQerrorMessage(m_conn));
PQclear(res);
AfxMessageBox(strErr);
return;
}
DWORD dwend
= ::GetTickCount();
CString strOut;
strOut.Format(_T(
"插入%d条数据 pglib所用时间为:%lf秒"),TESTCOUNT,(double)(dwend-dwbegin)/1000);
AfxMessageBox(strOut);
PQfinish(m_conn);

经测试插入10000条数据 需要1
-2秒时间

posted @ 2011-08-11 15:29  银翼的魔术师  阅读(805)  评论(0编辑  收藏  举报