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秒时间