Windows 使用说明
安装odbc驱动程序 解压
unvdb_odbc_windows_x64.zip,执行对应的 msi 安装程序配置数据源 打开 ODBC 数据源管理器
点击添加,选择 PostgreSQL 数据源驱动程序,填写数据源信息
点击 Test,验证是否能正常连接

编程示例
#include <iostream> #include <windows.h> #include <sql.h> #include <sqlext.h> using namespace std; int main() { SQLHENV env = SQL_NULL_HENV; SQLHDBC dbc = SQL_NULL_HDBC; SQLHSTMT stmt = SQL_NULL_HSTMT; SQLRETURN ret; SQLWCHAR* dsn = (SQLWCHAR*)L"PostgreSQL35W"; SQLWCHAR* uid = (SQLWCHAR*)L"unvdb"; SQLWCHAR* pwd = (SQLWCHAR*)L"0202"; SQLWCHAR* query = (SQLWCHAR*)L"SELECT * FROM tt"; ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); if (ret != SQL_SUCCESS) { cout << "Error allocating environment handle" << endl; goto cleanup; } ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); if (ret != SQL_SUCCESS) { cout << "Error setting environment attribute" << endl; goto cleanup; } ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); if (ret != SQL_SUCCESS) { cout << "Error allocating connection handle" << endl; goto cleanup; } ret = SQLConnect(dbc, dsn, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS); if (ret != SQL_SUCCESS) { cout << "Error connecting to database" << endl; goto cleanup; } ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); if (ret != SQL_SUCCESS) { cout << "Error allocating statement handle" << endl; goto cleanup; } ret = SQLExecDirect(stmt, query, SQL_NTS); if (ret != SQL_SUCCESS) { cout << "Error executing query" << endl; goto cleanup; } SQLINTEGER id; while (SQLFetch(stmt) == SQL_SUCCESS) { ret = SQLGetData(stmt, 1, SQL_C_LONG, &id, 0, NULL); if (ret != SQL_SUCCESS) { cout << "Error getting data" << endl; goto cleanup; } cout << id << endl; } cleanup: if (stmt != SQL_NULL_HSTMT) { SQLFreeHandle(SQL_HANDLE_STMT, stmt); } if (dbc != SQL_NULL_HDBC) { SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); } if (env != SQL_NULL_HENV) { SQLFreeHandle(SQL_HANDLE_ENV, env); } return 0; }