Introduction
MFC provides wrapper classes like CDatabase
and CResultSet
for accessing databases from your C++ applications. But if you want to avoid using MFC in your application, then you have only one option - call low level ODBC functions. EasyODBC is a C++ code library that provides simple classes that encapsulate Win32 ODBC functions.
Background
For using the classes in EasyODBC, you should have a basic knowledge on databases and SQL. It is also expected that you have working knowledge of C++ and the Visual C++ IDE. If you are familiar with JDBC (Java Database Connectivity), then the classes in EasyODBC will seem more easy to use.
Using the code
For using EasyODBC, first include easy_odbc.h using the #include
preprocessor directive. All classes in EasyODBC are part of a namespace called easyodbc
.
To open a connection to an ODBC data source, you have to create an object of class Database
and call its Open()
member function:
easyodbc::Database db;
db.Open("MY_ODBC","username","password");
For retrieving data from the database, you have to use the ResultSet
class:
easyodbc::ResultSet rslt = db.ExecuteQuery("SELECT * FROM emp");
Information about the resultset, like the number of columns in it, can be obtained by calling the GetMetaData()
function, which returns an object of ResultSetMetaData
.
easyodbc::ResultSetMetaData mtdt = rslt.GetMetaData();
int column_count = mtdt.GetColumnCount();
printf("\n%d Columns returned\n",column_count);
For getting information about a particular column, call the GetColumn
member function of ResultSetMetaData
:
easyodbc::Column col;
mtdt.GetColumn(1,&col);
Data stored in a ResultSet
has to be bound to memory buffers for retrieval. This is done using the Bind()
function of ResultSet
:
char strName[26];
rslt.Bind(1,strName,25);
The above code binds the first column in the table with the buffer strName
. Now, whenever data is returned by the ResultSet
, the first column's data will be stored in the variable strName
. Data can be pulled out of the ResultSet
object by calling either the MoveFirst()
, MoveNext()
, MovePrevious()
or MoveLast()
member functions. For e.g., the following code prints out the value of the first column in the ResultSet
:
while(rslt.MoveNext()) {
printf("%s\n",strName);
}
For executing any other SQL statements, you have to call the Execute()
member function of Database
:
db.Execute("DELETE FROM emp");
The Exceute()
function will return the number of rows affected by the statement. After database operations are over, you must release the resources occupied by ODBC by calling the Close()
function of the class Database
.
EasyODBC provides the EasyODBCException
class to handle ODBC exceptions. All EasyODBC code should be enclosed in a try
-catch
block like this:
try {
}catch(easyodbc::EasyODBCException *ex) {
char buff[51];
ex->GetMessage(buff);
printf("Error: %s",buff);
}
In the demo project you will find a complete working program which demonstrates the use of various EasyODBC classes.
History
- Created: May 27th, 2003
- Last updated: August 12th, 2003