ODBC drivers >

JDBC drivers >

Bridges, gateways >

Other >

All products

Connect JDBC to any ODBC driver

Connect JDBC to Microsoft Access

Cross-platform or cross-architecture access to any ODBC driver

ODBC access to any JDBC driver

Connect dbExpress applications to any ODBC driver

Connect XML applications to any ODBC driver

Access mutiple ODBC data sources from one SQL statement

Create custom ODBC drivers

Bespoke data access requirements

In the pipeline

Support

Resources

Quick start

Licensing

Knowledge Base

User Guides

Company

About Us

Careers & Partners

Download ODBC Drivers for

Oracle, SQL Server, Salesforce, MongoDB, Access, Derby, InterBase, DB2, & more.

Learn More
/**********************************************************************
* FILENAME : ListTables.c
*
* DESCRIPTION :
* Simple example to list the tables available on a datasource
*
* ODBC USAGE :
* 		SQLTables - to request TABLE names
*		SQLNumResultCols - to get number of columns in the rowset
*		For each table
*			SQLFetch - fetches the next rowset
*			SQLGetData - for each column in the rowset display
* - Catalog, Schema, Table, Type, Remarks in
* tabular form
*/
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>
#include <string.h>
#include "util.c"
int main () {
 // For formatting output
 char padding[] = " ";
 int max=strlen(padding);
 SQLHENV henv = SQL_NULL_HENV; // Environment handle
 SQLHDBC hdbc = SQL_NULL_HDBC; // Connection handle
 SQLHSTMT hstmt = SQL_NULL_HSTMT;// Statement handle
 SQLRETURN retcode;				// Return status
	SQLSMALLINT columns; 			// Number of columns in result-set
	// Allocate an environment handle
	retcode=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
 CHECK_ERROR(retcode, "SQLAllocHandle(ENV)", henv, SQL_HANDLE_ENV);
	// Set ODBC version
	retcode=SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
 (void *) SQL_OV_ODBC3, 0);
 CHECK_ERROR(retcode, "SQLSetEnvAttr(SQL_ATTR_ODBC_VERSION)",
 henv, SQL_HANDLE_ENV);
	// Allocate a connection handle
	retcode=SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
 CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_DBC)",
 hdbc, SQL_HANDLE_DBC);
	// DSN
	retcode=SQLDriverConnect(hdbc, NULL, "DSN=DATASOURCE;",
 SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
 CHECK_ERROR(retcode, "SQLDriverConnect(DATASOURCE)",
 hdbc, SQL_HANDLE_DBC);
	// Allocate a statement handle
	retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
 CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_STMT)",
 hstmt, SQL_HANDLE_STMT);
	// Retrieve a list of tables
	retcode=SQLTables(hstmt, NULL, 0, NULL, 0, NULL, 0, "TABLE", SQL_NTS);
 CHECK_ERROR(retcode, "SQLTables()", hstmt, SQL_HANDLE_STMT);
	// How many columns are there
	retcode=SQLNumResultCols(hstmt, &columns);
 CHECK_ERROR(retcode, "SQLNumResultCols()",
 hstmt, SQL_HANDLE_STMT);
	printf ("\nCatalog Schema Table ");
 printf (" Type Remarks");
	printf ("\n------- ------- ------ ");
 printf (" ---- -------\n");
	/* Loop through the rows in the result-set */
	while (SQL_SUCCEEDED(retcode = SQLFetch(hstmt))) {
	 SQLUSMALLINT i;
	 // Loop through the columns
		printf ("\n");
	 for (i = 1; i <= columns; i++) {
	 SQLLEN indicator;
	 SQLCHAR buf[255];
	 // Retrieve column data as a string
			retcode = SQLGetData(hstmt, i, SQL_C_CHAR,
 buf, sizeof(buf), &indicator);
			if (SQL_SUCCEEDED(retcode)) {
			 // Handle null columns
			 if (indicator == SQL_NULL_DATA) strcpy (buf, "NULL");
				// Column 3 is the table name
				if (i==3)
					padOut (buf, padding, max);
				else
					padOut (buf, padding, 8);
		 printf("%s%s", buf, padding);
			}
		}
	}
exit:
 printf ("\nComplete.\n");
 // Free handles
 // Statement
 if (hstmt != SQL_NULL_HSTMT)
 SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
 // Connection
 if (hdbc != SQL_NULL_HDBC) {
 SQLDisconnect(hdbc);
 SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
 }
 // Environment
 if (henv != SQL_NULL_HENV)
 SQLFreeHandle(SQL_HANDLE_ENV, henv);
 return 0;
}

Further information

Download ODBC Drivers for

Oracle, SQL Server, Salesforce, MongoDB, Access, Derby, InterBase, DB2, & more.

Learn More
Share:

AltStyle によって変換されたページ (->オリジナル) /