1. 什么是ODBC
ODBC(Open Database Connectivity, 开放式数据库连接), 是微软提出的数据库访问接口标准。开放数据库互连定义了访问数据库的API一个规范,这些API独立于不同厂商的数据库产品。在开始使用ODBC编程之前,需要安装你要连接的数据库的ODBC驱动程序,并在ODBC驱动管理器中注册。Windows 操作系统自带了ODBC驱动程序管理器, 可以在 “控制面板->管理驱动->ODBC管理器” 找到.
Unix/Linux 下的ODBC管理器请看下面链接
ODBC管理器 http://www.unixodbc.org/
ODBC 驱动 http://www.easysoft.com/products/data_access/index.html
ODBC API 可以在MSDN上找到 http://msdn.microsoft.com/en-us/library/ms714177.aspx
2. ODBC头文件
ODBC头文件有5个:sql.h, sqlext.h, sqltypes.h, sqlucode.h and odbcinst.h
一般情况下用到sql.h 和sqlext.h
sql.h包含了大多数我们经常会用到的函数, sql.h include 了sqltypes.h
sqlext.h 包含了ODBC3的新特性, sqlext.h include了sqlucode.h
odbcinst.h 包含了一些安装配置相关的API, 比如SQLConfigDataSource函数
3. ODBC核心宏,对象HANDLE和函数
(1) 宏
ODBCVER, 决定你使用的ODBC API, ODBCVER=0x0351表示使用的是3.5.1版本的ODBC, ODBCVER=0x0200表示使用ODBC 2
UNICODE, 当定义了这个宏, 所有函数都使用unicode字符串
ODBC_STD
(2)对象ODBC HANDLES
SQLHENV: environment handle ,
SQLHDBC: Connection handle,
SQLHSTMT: SQL statement handle,
SQLHDESC: descriptor handle
有了SQLHENV, SQLHDBC, SQLHSTMT这三个handle就能做很多事情了。
(3)函数
a.分配和释放Handle
SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandlePtr)
SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
这里的HandleType值可以是
SQL_HANDLE_ENV
SQL_HANDLE_DBC
SQL_HANDLE_STMT
对于不用的对象的函数
SQLAllocEnv/SQLFreeEnv
SQLAllocConnect/SQLDisconnect/SQLFreeConnect
SQLAllocStmt/SQLFreeStmt
b. 设置属性
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
SQLSetStmtAttr
c. 操作数据库
SQLConnect
SQLDriverConnect
SQLPrepare
SQLExecute
SQLExecDirect
SQLRowCount
SQLFetchScroll/SQLBindCol
d.错误处理
SQLGetDiagRec
4. 一个例子
列出安装的ODBC驱动的data source
5. MFC ODBC
MFC对ODBC对象和函数进行了封装,主要有以下几个类CDatabase, CRecordset. 需要包含"afxdb.h"头文件
参考:
http://www.easysoft.com/developer/languages/c/odbc-tutorial-fetching-results.html