#include #include int main(int argc, char **argv) { HENV henv = SQL_NULL_HANDLE; HDBC hdbc = SQL_NULL_HANDLE; HSTMT hstmt = SQL_NULL_HANDLE; SQLCHAR connstr[] = "DSN=psqlodbc_test_dsn"; SQLCHAR connstrout[4096]; SQLSMALLINT erroutlen; SQLLEN rowc = -1; if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv))) { perror("AllocEnv"); exit(1); } if (!SQL_SUCCEEDED(SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER))) { perror("SetEnv"); exit(1); } if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc))) { perror("AllocConnect"); exit(1); } if (!SQL_SUCCEEDED(SQLDriverConnect(hdbc, NULL, connstr, SQL_NTS, connstrout, sizeof(connstrout), &erroutlen, SQL_DRIVER_COMPLETE))) { perror("connect"); exit(1); } if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt))) { perror("AllocStmt"); exit(1); } if (!SQL_SUCCEEDED(SQLExecDirect(hstmt, (SQLCHAR *) "drop table if exists t1", SQL_NTS))) { perror("drop t1"); exit(1); } if (!SQL_SUCCEEDED(SQLExecDirect(hstmt, (SQLCHAR *) "create table t1(i int4)", SQL_NTS))) { perror("create t1"); exit(1); } if (!SQL_SUCCEEDED(SQLExecDirect(hstmt, (SQLCHAR *) "drop table if exists t2", SQL_NTS))) { perror("drop t2"); exit(1); } if (!SQL_SUCCEEDED(SQLExecDirect(hstmt, (SQLCHAR *) "insert into t1 values (1), (2), (2)", SQL_NTS))) { perror("insert into"); exit(1); } if (!SQL_SUCCEEDED(SQLExecDirect(hstmt, (SQLCHAR *) "select distinct i into t2 from t1", SQL_NTS))) { perror("select into"); exit(1); } if (!SQL_SUCCEEDED(SQLRowCount(hstmt, &rowc))) { perror("SQLRowCount"); exit(1); } printf("SQLRowCount=%d\n", (int) rowc); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); SQLDisconnect(hdbc); return 0; }