You probably meant ODBC, as your example is an ODBC program? Alexander Schr�der SAP DB, SAP Labs Berlin
> -----Original Message----- > From: Sean Mollet [mailto:[EMAIL PROTECTED] > Sent: Wednesday, April 28, 2004 2:53 PM > To: [EMAIL PROTECTED] > Subject: SQLDBC example > > > All: > After perusing the archives for a while, I was unable to find where > anyone had posted a working example for SQLDBC usage. I also > had trouble > finding anything useful in the docs. As follows is a simple > class that works > like a charm. > > Sean > > sapdb.h > ___________________ > > //Header file for SAPDB Access > > //(c) 2004 Sean Mollet > > //You are free to use these as you like > > //Just please give me some credit > > #include "WINDOWS.H" > > #include "sql.h" > > #include "sqlext.h" > > class dbaccess{ > > public: > > dbaccess(); > > ~dbaccess(); > > int connect(); > > int execute(const char *statement,...); > > int checkerror(); > > int fetchrow(); > > UCHAR DSN[SQL_MAX_DSN_LENGTH]; // Data Source Name buffer > > UCHAR UID[10]; // User ID buffer > > UCHAR Passwd[10]; // Password buffer > > HENV hEnv; // Env Handle from SQLAllocEnv() > > HDBC hDBC; // Connection handle > > HSTMT hStmt; // Statement handle > > char **resultset; //result set > > int currentrow; //currently active row > > int columncount; //number of columbs in result set > > RETCODE retcode; // Return code > > SQLCHAR *error; // Buffer to hold error text > > SQLCHAR *sql; > > }; > > > > sapdb.cpp > > _____________________ > > //Class file for SapDB access > > //(c) 2004 Sean Mollet > > #include "sapdb.h" > > #include "stdio.h" > > #include "stdlib.h" > > #include "stdarg.h" > > //Constructor > > dbaccess::dbaccess(){ > > // Allocate memory for ODBC Environment handle > > SQLAllocEnv (&hEnv); > > // Allocate memory for the connection handle > > SQLAllocConnect (hEnv, &hDBC); > > //Allocate memory for our error string > > error = (SQLCHAR *)malloc(255); > > //clear these variables > > currentrow=0; > > columncount=0; > > } > > //Destructor > > dbaccess::~dbaccess(){ > > // Free the allocated statement handle > > if(hStmt != NULL){ > > SQLFreeStmt (hStmt, SQL_DROP); > > } > > // Disconnect from datasource > > SQLDisconnect (hDBC); > > // Free the allocated connection handle > > SQLFreeConnect (hDBC); > > // Free the allocated ODBC environment handle > > SQLFreeEnv (hEnv); > > //Free our error buffer > > free(error); > > //free the resultset > > for(int a=1;a<=columncount;a++){ > > free(resultset[a]); > > } > > free(resultset); > > } > > // Connect to the data source > > int dbaccess::connect(){ > > retcode = SQLConnect (hDBC, DSN,SQL_NTS, UID, SQL_NTS, > Passwd, SQL_NTS); > > return(retcode); > > }; > > //Execute a SQL statement > > int dbaccess::execute(const char *statement,...){ > > va_list ap; > > va_start(ap,statement); > > > sql = (SQLCHAR *) malloc(5000); > > vsprintf((char *)sql,statement,ap); > > // Allocate memory for the statement handle > > retcode = SQLAllocStmt (hDBC, &hStmt); > > // Prepare the SQL statement by assigning it to the statement handle > > retcode = SQLPrepare (hStmt,sql, SQL_NTS); > > free(sql); // we don't need this anymore > > if(retcode!=0){ > > return retcode; > > } > > // Execute the resulting handle > > retcode = SQLExecute (hStmt); > > if(retcode==0){//statement executed properly > > SQLNumResultCols(hStmt,(SQLSMALLINT *) &columncount); > > } > > //create the results array > > resultset = (char **) malloc(sizeof(char *)*columncount); > > for(int a=1;a<=columncount;a++){ > > resultset[a]=(char *) malloc(sizeof(char *)*255); > > retcode = SQLBindCol (hStmt, a, SQL_C_CHAR, resultset[a], 255,NULL); > > } > > return retcode; > > } > > int dbaccess::fetchrow(){ > > return SQLFetch(hStmt); > > } > > > > //Handle any errors that might come along > > int dbaccess::checkerror(){ > > if(retcode!=0){//there was an error > > SQLError(hEnv,hDBC,hStmt,NULL,NULL,error,255,NULL); > > return 1; > > } > > return 0; > > } > > > > > > -- > MaxDB Discussion Mailing List > For list archives: http://lists.mysql.com/maxdb > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- MaxDB Discussion Mailing List For list archives: http://lists.mysql.com/maxdb To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
