国产DM4数据库ODBC编程指南
使用这个函数可以用一个交互的方式来决定连接到数据源时所需要的一些信息。
使用SQLBrowseConnect函数连接数据源的代码示范如下:
SQLCHAR szConnStrIn[256] = "DSN=DM4;DRIVER=DM ODBC DRIVER;
DATABASE=SYSTEM;UID=SYSDBA;PWD=SYSDBA;";
SQLCHAR szConnStrOut[256];
SQLSMALLINT cbConnStrOut;
sret = SQLBrowseConnect(hdbc, szConnStrIn, SQL_NTS, szConnStrOut, 256, &cbConnStrOut);
if (RC_SUCCESSFUL(sret)) {
/* 连接数据源失败! */
…进行相应的错误处理…
exit(0);
}
设置与取得连接的属性
建立连接之后,应用程序可以通过调用SQLSetConnectAttr函数来设置连接属性,对连接进行全方面的管理。下面列出了一些常用的连接属性。
表2:常用的连接属性
属性 描述
SQL_ATTR_ACCESS_MODE 用来设置访问模式,即只读或者读写连接模式,可以用来优化并发控制策略。不支持
SQL_ATTR_ASYNC_ENABLE 是否支持异步执行
SQL_ATTR_AUTOCOMMIT 是否使用自动提交功能。
SQL_ATTR_CONNECTION_TIMEOUT 设定连接超时。(不支持)
SQL_ATTR_CURRENT_CATALOG 当前连接使用的编目。
SQL_ATTR_LOGIN_TIMEOUT 设定登录超时。不支持
SQL_ATTR_ODBC_CURSORS 设置驱动程序管理器使用游标的方式。
SQL_ATTR_PACKET_SIZE 设置网络传输包的大小。不支持
SQL_ATTR_QUIET_MODE 使弹出对话框有效/无效。
更多的连接属性,用户可以参考《Microsoft ODBC3.0程序员参考手册》,在这里不做介绍了。
应用程序可以通过调用SQLGetConnectAttr函数来取得当前连接的属性。
设置与取得连接属性的代码示范如下:
SQLINTEGER AUTOCOMMIOT_MODE;
/* 设置连接句柄属性,关闭自动提交功能 */
SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF,
SQL_IS_INTEGER);
/* 取得连接句柄属性,取得提交的模式 */
SQLGetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)&AUTOCOMMIOT_MODE,
Sizeof(SQLINTEGER), NULL);
4.断开与数据源之间的连接
如果要终止客户程序与服务器之间的连接,客户程序应当完成以下的几个操作:
(1)调用SQLFreeHandle释放语句句柄,关闭所有打开的游标,释放相关的语句句柄资源。(在非自动提交模式下,需事先提交当前的事务)
(2)调用函数SQLDisconnect关闭所有的连接。
(3)调用SQLFreeHandle释放连接句柄及其相关的资源。
(4)调用SQLFreeHandle释放环境句柄及其相关的资源。
一个完整的连接管理示范代码如下:
#include
#include
#include
#include
/* 检测返回代码是否为成功标志,当为成功标志返回TRUE,否则返回FALSE */
#define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO)
/* 检测返回代码是否为失败标志,当为失败标志返回TRUE,否则返回FALSE */
#define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))
HENV henv; /* 环境句柄 */
HDBC hdbc; /* 连接句柄 */
HSTMT hsmt; /* 语句句柄 */
SQLRETURN sret; /* 返回代码 */
SQLINTEGER AUTOCOMMIOT_MODE;
void main(void)
{
/* 申请一个环境句柄 */
SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
/* 设置环境句柄的ODBC版本 */
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,
SQL_IS_INTEGER);
/* 申请一个连接句柄 */
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
sret = SQLConnect(hdbc, (SQLCHAR *)"DM4", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS);
if (RC_SUCCESSFUL(sret)) {
/* 连接数据源失败! */
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
exit(0);
}
/* 设置连接句柄属性,关闭自动提交功能 */
SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF,
SQL_IS_INTEGER);
/* 取得连接句柄属性,取得提交的模式 */
SQLGetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)&AUTOCOMMIOT_MODE,
sizeof(SQLINTEGER), NULL);
/* 申请一个语句句柄 */
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hsmt);
…在这里可以使用语句句柄进行相应的数据库操作…
/* 释放语句句柄 */
SQLFreeHandle(SQL_HANDLE_STMT, hsmt);
/* 提交连接上的事务 */
SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT);
/* 断开与数据源之间的连接 */
SQLDisconnect(hdbc);
/* 释放连接句柄 */
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
/* 释放环境句柄 */
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
4 ODBC应用程序编程的基本步骤
4.1 创建ODBC资源
在客户使用ODBC方法访问一个DM4数据库服务器之前,必须先对自己的应用程序所用的ODBC资源进行配置。本节将介绍如何为你的应用程序安装和配置ODBC资源。
在客户机上配置ODBC资源的步骤:
1.在控制面板上访问ODBC构件,显示ODBC数据源管理器对话框,如图4.1所示。ODBC数据源管理器对话框包含的标签如下:
(1)用户DSN:添加、删除或配置本机上的数据源,它们只可由当前用户使用。
(2)系统DSN:添加、删除或配置本机上的数据源,它们可由任何用户使用。
(3)文件DSN:添加、删除或配置在分离文件中的数据源。这些文件可以被安装了同样数据库驱动器的用户共享。
(4)驱动程序:列出了安装在客户机上的数据库驱动器。
(5)跟踪:用于测试你的数据库应用程序。它跟踪客户机和数据库服务器之间的ODBCAPI的调用。
(6)连接池:允许不同的应用程序自动复用多个连接。这有助于限制和数据库服务器的通信过载。
(7)关于:显示主要ODBC组件的版本。
图4.1ODBC数据源管理器对话框
2.设置和配置一个系统DSN,请单击系统DSN标签,单击添加按钮增加一个新的DSN,显示如图4.2所示的对话框。
图4.2创建新数据源对话框
3.选择DM4 ODBC3.0驱动程序即DMODBCDRIVER,单击完成按钮,显示如图4.3所示的DM4 ODBC3.0数据源配置对话框。
图4.3创建新的DM4数据源对话框
4.输入数据源的名称

