EasyODBC






4.72/5 (25投票s)
一个易于使用的 ODBC C++ 封装类。
引言
MFC 提供了像 CDatabase
和 CResultSet
这样的封装类,用于从您的 C++ 应用程序访问数据库。但是,如果您想避免在应用程序中使用 MFC,那么您只有一个选择 - 调用底层 ODBC 函数。EasyODBC 是一个 C++ 代码库,它提供了封装 Win32 ODBC 函数的简单类。
背景
要使用 EasyODBC 中的类,您应该具备数据库和 SQL 的基本知识。并且您应该对 C++ 和 Visual C++ IDE 有一定的使用经验。如果您熟悉 JDBC(Java 数据库连接),那么 EasyODBC 中的类使用起来会更容易。
使用代码
要使用 EasyODBC,首先使用 #include
预处理器指令包含 *easy_odbc.h*。 EasyODBC 中的所有类都是一个名为 easyodbc
的命名空间的一部分。
要打开到 ODBC 数据源的连接,您必须创建 Database
类的一个对象,并调用它的 Open()
成员函数
easyodbc::Database db; db.Open("MY_ODBC","username","password");
要从数据库检索数据,您必须使用 ResultSet
类
easyodbc::ResultSet rslt = db.ExecuteQuery("SELECT * FROM emp");
关于结果集的信息,例如其中的列数,可以通过调用 GetMetaData()
函数获得,该函数返回一个 ResultSetMetaData
对象。
easyodbc::ResultSetMetaData mtdt = rslt.GetMetaData(); int column_count = mtdt.GetColumnCount(); printf("\n%d Columns returned\n",column_count);
要获取关于特定列的信息,请调用 ResultSetMetaData
的 GetColumn
成员函数
easyodbc::Column col;
mtdt.GetColumn(1,&col);
存储在 ResultSet
中的数据必须绑定到内存缓冲区才能进行检索。这可以使用 ResultSet
的 Bind()
函数完成
char strName[26]; rslt.Bind(1,strName,25); // arguments: column number, // buffer, maximum length of buffer
上面的代码将表中的第一列与缓冲区 strName
绑定。现在,每当 ResultSet
返回数据时,第一列的数据将存储在变量 strName
中。可以通过调用 MoveFirst()
、MoveNext()
、MovePrevious()
或 MoveLast()
成员函数从 ResultSet
对象中提取数据。 例如,以下代码打印出 ResultSet
中第一列的值
while(rslt.MoveNext()) { printf("%s\n",strName); }
要执行任何其他 SQL 语句,您必须调用 Database
的 Execute()
成员函数
db.Execute("DELETE FROM emp");
Exceute()
函数将返回受语句影响的行数。在数据库操作结束后,您必须通过调用类 Database
的 Close()
函数来释放 ODBC 占用的资源。
EasyODBC 提供了 EasyODBCException
类来处理 ODBC 异常。所有 EasyODBC 代码都应该被包含在一个像这样的 try
-catch
块中
try { // easy_odbc code }catch(easyodbc::EasyODBCException *ex) { char buff[51]; ex->GetMessage(buff); printf("Error: %s",buff); }
在演示项目中,您会发现一个完整的工作程序,演示了各种 EasyODBC 类的使用。
历史
- 创建日期:2003年5月27日
- 上次更新:2003年8月12日