当前位置:C++技术网 > 资讯 > ODBC数据库函数使用说明

ODBC数据库函数使用说明

更新时间:2015-06-07 18:37:45浏览次数:1+次

1.句柄分配函数
SQLRETURN SQLAllocHandle(
SQLSMALLINT HandleType,
SQLHANDLE   InputHandle,
SQLHANDLE * OutputHandlePtr);
-------------------------------------------------------------
HandleType
句柄类型。只有四种,SQL_HANDLE_ENV(环境句柄) SQL_HANDLE_DBC(连接句柄) SQL_HANDLE_DESC(描述句柄) SQL_HANDLE_STMT(语句句柄) 。环境句柄是建立ODBC环境需要的,搭建了这个环境才能做其他数据库相关的事情。连接句柄就是用来连接数据库的,描述句柄用来描述连接的各种信息,语句句柄用来执行语句。

InputHandle
输入句柄。新分配的句柄将要基于此句柄而创建,如果是分配环境句柄则此句柄为SQL_NULL_HDBC,即空句柄。如果分配连接句柄,则为环境句柄变量,如果分配语句句柄,则为连接句柄变量。

OutputHandlePtr
输出句柄。此参数是一个句柄指针,用来存放新分配的句柄。用取址符来传递。

返回值
可能取值有:SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE, or SQL_ERROR.前两个都表示成功,第二个虽然成功,但带有警告信息。第三个为句柄不可用,第四个为错误。后两个都表示出错。

例如:SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);

2.设置属性
SQLRETURN SQLSetEnvAttr(
SQLHENV      EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
-------------------------------------------------------------
EnvironmentHandle
环境句柄

Attribute
属性类型

ValuePtr
属性取值,指针类型,最好强制转换成void*类型

StringLength
属性值长度,通常为0

例如:SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);

3.连接数据库
SQLRETURN SQLDriverConnect(
SQLHDBC         ConnectionHandle,
SQLHWND        WindowHandle,
SQLCHAR *       InConnectionString,
SQLSMALLINT    StringLength1,
SQLCHAR *        OutConnectionString,
SQLSMALLINT    BufferLength,
SQLSMALLINT * StringLength2Ptr,
SQLUSMALLINT  DriverCompletion);
----------------------------------------------------------
ConnectionHandle
连接句柄

WindowHandle
窗口句柄,可以设置为NULL不指定窗口

InConnectionString
连接字符串,包含驱动、服务器、数据库、用户名、密码、(连接可信度,可要可不要)

StringLength1
连接字符串长度,一般写成SQL_NTS(宏)

OutConnectionString
连接成功后返回的完整的连接字符串

BufferLength
返回的连接字符串缓存的字符大小

StringLength2Ptr
连接成功后返回的完整的连接字符串的字符总数。如果大于或等于缓存长度,将会截断到 缓存大小减去空字符所占大小 的大小的长度的字符串。

DriverCompletion
一个指示标志,指示是否驱动管理器或驱动一定提示更多的连接信息。
可能的取值:(一般选择SQL_DRIVER_COMPLETE)
SQL_DRIVER_NOPROMPT 应用程序调用驱动管理器复制指定的连接字符串。
SQL_DRIVER_COMPLETE 和 SQL_DRIVER_COMPLETE_REQUIRED 如果应用程序指定的连接诶字符串包含DSN关键字,应用程序将调用驱动管理器复制连接字符串
SQL_DRIVER_PROMPT 如果连接字符串不包含驱动、数据源名字、文件数据源名关键字,驱动管理器将显示数据源对话框。

例如:SQLDriverConnect(hdbc, NULL,(SQLCHAR*) "Driver=SQL Server;Server=127.0.0.1;Trusted_Connection=no;Database=test;Uid=sa;Pwd=wdx19900810;", SQL_NTS, szOutConn,sizeof(szOutConn), (short*)&cbOutConn, SQL_DRIVER_COMPLETE);


3.执行SQL语句
SQLRETURN SQLExecDirect(
SQLHSTMT   StatementHandle,
SQLCHAR *  StatementText,
SQLINTEGER TextLength);
-----------------------------------------------------------------
StatementHandle
语句句柄

StatementText
SQL语句字符串

TextLength
字符串长度,一般是SQL_NTS

例如:SQLExecDirect(hstmt,(SQLTCHAR*)"select * from student",SQL_NTS);

4.列绑定
SQLRETURN SQLBindCol(
SQLHSTMT     StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT  TargetType,
SQLPOINTER   TargetValuePtr,
SQLLEN       BufferLength,
SQLLEN *     StrLen_or_Ind);
-----------------------------------------------------------------
StatementHandle
语句句柄

ColumnNumber
绑定的列的序号,从1开始

TargetType
绑定的列的数据类型

TargetValuePtr
绑定的对应的程序的变量的地址

BufferLength
变量占内存的大小

StrLen_or_Ind
从数据库返回的数据量的大小

例如:SQLBindCol( hstmt,1,SQL_C_CHAR,szFilename,sizeof(szFilename),(long*)&rtsize);
-----------------------------------------------------------------
5.获取数据
SQLRETURN SQLFetch(
SQLHSTMT StatementHandle);
------------------------------------------------------------------
StatementHandle
语句句柄

例如:SQLFetch(hstmt);

6.释放句柄
SQLRETURN SQLFreeHandle(
SQLSMALLINT HandleType,
SQLHANDLE   Handle);
------------------------------------------------------------------
HandleType
句柄类型

Handle
句柄变量

例如:SQLFreeHandle(SQL_HANDLE_STMT,hstmt);

7.断开连接
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
------------------------------------------------------------------
ConnectionHandle
连接句柄

例如:SQLDisconnect(hdbc);