#include #include #include #include #include #include static void signal_handler() { char **bcktrc_syms; void *bcktrc[128]; int i, bcktrc_sz; bcktrc_sz = backtrace(bcktrc, 128); bcktrc_syms = backtrace_symbols(bcktrc, bcktrc_sz); for (i = 0; i < bcktrc_sz; i++) printf("%d: %s\n", bcktrc_sz - i - 1, bcktrc_syms[i]); free(bcktrc_syms); exit(EXIT_FAILURE); } int main() { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; char buffer[32]; SQLLEN indicator = 0; const char *dsn, *username, *password, *sql; signal(SIGSEGV, signal_handler); dsn = "zabbix_2_2"; username = ""; password = ""; sql = "select count(*) from hosts"; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); SQLConnect(hdbc, (SQLCHAR *)dsn, SQL_NTS, (SQLCHAR *)username, SQL_NTS, (SQLCHAR *)password, SQL_NTS); SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLExecDirect(hstmt, (SQLCHAR *)sql, SQL_NTS); SQLBindCol(hstmt, (SQLUSMALLINT)1, SQL_C_CHAR, (SQLPOINTER)buffer, (SQLLEN)sizeof(buffer), &indicator); SQLFetch(hstmt); printf("%s\n", buffer); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; }