// maria_odbc.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" HANDLE hEventLog; HENV henv; // Datenbankvariablen HDBC hdbc; ULONG interval=1; int main(int argc, char* argv[]) { RETCODE rc; HSTMT hstmt; SQLLEN cbCount; int counter=0; char sql[255]; char pnr[31], name[256], vorname[256]; char dbname[20], dbusr[50], dbpwd[50]; rc = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); rc = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, -1); rc = SQLAllocHandle (SQL_HANDLE_DBC, henv, &hdbc); strcpy_s (dbname, sizeof(dbname), "test"); strcpy_s (dbusr, sizeof(dbusr), "test"); strcpy_s (dbpwd, sizeof(dbpwd), "test"); rc = SQLConnect (hdbc, (SQLCHAR *)dbname, (SWORD)strlen(dbname), (SQLCHAR *)dbusr, (SWORD)strlen(dbusr), (SQLCHAR *)dbpwd, (SWORD)strlen(dbpwd)); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { printf ("Can't connect to database.\n"); return -1; } // Now we are connected - let's select something in a loop printf ("Start selecting Data - hit any key to quit!\n"); while (!_kbhit()) { printf ("\nLoop count=%i\n", ++counter); rc = SQLAllocHandle (SQL_HANDLE_STMT, hdbc, &hstmt); sprintf_s (sql, sizeof(sql), "select pnr, name, vorname from mitarbeiter where ze=1 and status=0 order by name"); rc = SQLExecDirect (hstmt, (SQLCHAR *)sql, (SQLINTEGER)strlen(sql)); if (rc == SQL_SUCCESS) { SQLBindCol (hstmt, 1, SQL_C_CHAR, pnr, 31, &cbCount); SQLBindCol (hstmt, 2, SQL_C_CHAR, name, 256, &cbCount); SQLBindCol (hstmt, 3, SQL_C_CHAR, vorname, 256, &cbCount); do { memset (pnr, '\0', 31); memset (name, '\0', 256); memset (vorname, '\0', 256); rc = SQLFetch (hstmt); switch (rc) { case SQL_SUCCESS: printf ("."); break; default: break; } } while ((rc == SQL_SUCCESS) && (!_kbhit())); } SQLFreeHandle(SQL_HANDLE_STMT, hstmt); Sleep (interval); } _getch(); if (hdbc) { SQLDisconnect (hdbc); SQLFreeHandle (SQL_HANDLE_DBC, hdbc); hdbc = NULL; } if (henv) { SQLFreeHandle(SQL_HANDLE_ENV, henv); henv = NULL; } return 0; }