ODBC接口参考
ODBC接口是一套提供给用户的API函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考msdn(网址:https://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx)中ODBC Programmer's Reference项的相关内容。
SQLAllocEnv
在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。
SQLAllocConnect
在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。
SQLAllocHandle
功能描述
分配环境、连接、语句或描述符的句柄,它替代了ODBC 2.x函数SQLAllocEnv、SQLAllocConnect及SQLAllocStmt。
原型
1 2 3 |
SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandlePtr); |
参数
关键字 |
参数说明 |
---|---|
HandleType |
由SQLAllocHandle分配的句柄类型。必须为下列值之一:
申请句柄顺序为,先申请环境句柄,再申请连接句柄,最后申请语句句柄,后申请的句柄都要依赖它前面申请的句柄。 |
InputHandle |
将要分配的新句柄的类型。
|
OutputHandlePtr |
输出参数:一个缓冲区的指针,此缓冲区以新分配的数据结构存放返回的句柄。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL_ERROR,则它会将OutputHandlePtr的值设置为SQL_NULL_HDBC、SQL_NULL_HSTMT或SQL_NULL_HDESC。之后,通过调用带有适当参数的SQLGetDiagRec,其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLAllocStmt
在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。
SQLBindCol
功能描述
将应用程序数据缓冲区绑定到结果集的列中。
原型
1 2 3 4 5 6 |
SQLRETURN SQLBindCol(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
语句句柄。 |
ColumnNumber |
要绑定结果集的列号。起始列号为0,以递增的顺序计算列号,第0列是书签列。若未设置书签页,则起始列号为1。 |
TargetType |
缓冲区中C数据类型的标识符。 |
TargetValuePtr |
输出参数:指向与列绑定的数据缓冲区的指针。SQLFetch函数返回这个缓冲区中的数据。如果此参数为一个空指针,则StrLen_or_IndPtr是一个有效值。 |
BufferLength |
TargetValuePtr指向缓冲区的长度,以字节为单位。 |
StrLen_or_IndPtr |
输出参数:缓冲区的长度或指示器指针。若为空值,则未使用任何长度或指示器值。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意
当SQLBindCol返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLBindParameter
功能描述
将一条SQL语句中的一个参数标志和一个缓冲区绑定起来。
原型
1 2 3 4 5 6 7 8 9 10 |
SQLRETURN SQLBindParameter(SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber, SQLSMALLINT InputOutputType, SQLSMALLINT ValuetType, SQLSMALLINT ParameterType, SQLULEN ColumnSize, SQLSMALLINT DecimalDigits, SQLPOINTER ParameterValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr); |
参数
关键词 |
参数说明 |
---|---|
StatementHandle |
语句句柄。 |
ParameterNumber |
参数序号,起始为1,依次递增。 |
InputOutputType |
输入输出参数类型。 |
ValueType |
参数的C数据类型。 |
ParameterType |
参数的SQL数据类型。 |
ColumnSize |
列的大小或相应参数标记的表达式。 |
DecimalDigits |
列的十进制数字或相应参数标记的表达式。 |
ParameterValuePtr |
指向存储参数数据缓冲区的指针。 |
BufferLength |
ParameterValuePtr指向缓冲区的长度,以字节为单位。 |
StrLen_or_IndPtr |
缓冲区的长度或指示器指针。若为空值,则未使用任何长度或指示器值。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当SQLBindCol返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLColAttribute
功能描述
返回结果集中一列的描述符信息。
原型
1 2 3 4 5 6 7 |
SQLRETURN SQLColAttribute(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier, SQLPOINTER CharacterAtrriburePtr, SQLSMALLINT BufferLength, SQLSMALLINT *StringLengthPtr, SQLPOINTER NumericAttributePtr); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
语句句柄。 |
ColumnNumber |
要检索字段的列号,起始为1,依次递增。 |
FieldIdentifier |
IRD中ColumnNumber行的字段。 |
CharacterAttributePtr |
输出参数:一个缓冲区指针,返回FieldIdentifier字段值。 |
BufferLength |
|
StringLengthPtr |
输出参数:缓冲区指针,存放*CharacterAttributePtr中字符类型数据的字节总数,对于非字符类型,忽略BufferLength的值。 |
NumericAttributePtr |
输出参数:指向一个整型缓冲区的指针,返回IRD中ColumnNumber行FieldIdentifier字段的值。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当SQLColAttribute返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLConnect
功能描述
在驱动程序和数据源之间建立连接。连接上数据源之后,可以通过连接句柄访问到所有有关连接数据源的信息,包括程序运行状态、事务处理状态和错误信息。
原型
1 2 3 4 5 6 7 |
SQLRETURN SQLConnect(SQLHDBC ConnectionHandle, SQLCHAR *ServerName, SQLSMALLINT NameLength1, SQLCHAR *UserName, SQLSMALLINT NameLength2, SQLCHAR *Authentication, SQLSMALLINT NameLength3); |
参数
关键字 |
参数说明 |
---|---|
ConnectionHandle |
连接句柄,通过SQLAllocHandle获得。 |
ServerName |
要连接数据源的名称。 |
NameLength1 |
ServerName的长度。 |
UserName |
数据源中数据库用户名。 |
NameLength2 |
UserName的长度。 |
Authentication |
数据源中数据库用户密码。 |
NameLength3 |
Authentication的长度。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
- SQL_STILL_EXECUTING:表示语句正在执行。
注意事项
当调用SQLConnect函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLDisconnect
功能描述
关闭一个与特定连接句柄相关的连接。
原型
1
|
SQLRETURN SQLDisconnect(SQLHDBC ConnectionHandle); |
参数
关键字 |
参数说明 |
---|---|
ConnectionHandle |
连接句柄,通过SQLAllocHandle获得。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当调用SQLDisconnect函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLExecDirect
功能描述
使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。
原型
1 2 3 |
SQLRETURN SQLExecDirect(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
语句句柄,通过SQLAllocHandle获得。 |
StatementText |
要执行的SQL语句。不支持一次执行多条语句。 |
TextLength |
StatementText的长度。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_NEED_DATA:在执行SQL语句前没有提供足够的参数。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
- SQL_STILL_EXECUTING:表示语句正在执行。
- SQL_NO_DATA:表示SQL语句不返回结果集。
注意事项
当调用SQLExecDirect函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLExecute
功能描述
如果语句中存在参数标记的话,SQLExecute函数使用参数标记参数的当前值,执行一条准备好的SQL语句。
原型
1
|
SQLRETURN SQLExecute(SQLHSTMT StatementHandle); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
要执行语句的语句句柄。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_NO_DATA:表示SQL语句不返回结果集。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
- SQL_STILL_EXECUTING:表示语句正在执行。
注意事项
当SQLExecute函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,可通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLFetch
功能描述
从结果集中取下一个行集的数据,并返回所有被绑定列的数据。
原型
1
|
SQLRETURN SQLFetch(SQLHSTMT StatementHandle); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
语句句柄,通过SQLAllocHandle获得。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_NO_DATA:表示SQL语句不返回结果集。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
- SQL_STILL_EXECUTING:表示语句正在执行。
注意事项
当调用SQLFetch函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLFreeStmt
在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参阅SQLFreeHandle。
SQLFreeConnect
在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参阅SQLFreeHandle。
释放与指定环境、连接、语句或描述符相关联的资源,它替代了ODBC 2.x函数SQLFreeEnv、SQLFreeConnect及SQLFreeStmt。
原型
1 2 |
SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle); |
参数
关键字 |
参数说明 |
---|---|
HandleType |
SQLFreeHandle要释放的句柄类型。必须为下列值之一:
如果HandleType不是这些值之一,SQLFreeHandle返回SQL_INVALID_HANDLE。 |
Handle |
要释放的句柄。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
如果SQLFreeHandle返回SQL_ERROR,句柄仍然有效。
示例
参见:示例
SQLFreeEnv
在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参阅SQLFreeHandle。
SQLPrepare
功能描述
准备一个将要进行的SQL语句。
原型
1 2 3 |
SQLRETURN SQLPrepare(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
语句句柄。 |
StatementText |
SQL文本串。 |
TextLength |
StatementText的长度。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
- SQL_STILL_EXECUTING:表示语句正在执行。
注意事项
当SQLPrepare返回的值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数分别设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLGetData
功能描述
SQLGetData返回结果集中某一列的数据。可以多次调用它来部分地检索不定长度的数据。
原型
1 2 3 4 5 6 |
SQLRETURN SQLGetData(SQLHSTMT StatementHandle, SQLUSMALLINT Col_or_Param_Num, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr); |
参数
关键字 |
参数说明 |
---|---|
StatementHandle |
语句句柄,通过SQLAllocHandle获得。 |
Col_or_Param_Num |
要返回数据的列号。结果集的列按增序从1开始编号。书签列的列号为0。 |
TargetType |
TargetValuePtr缓冲中的C数据类型的类型标识符。若TargetType为SQL_ARD_TYPE,驱动使用ARD中SQL_DESC_CONCISE_TYPE字段的类型标识符。若为SQL_C_DEFAULT,驱动根据源的SQL数据类型选择缺省的数据类型。 |
TargetValuePtr |
输出参数:指向返回数据所在缓冲区的指针。 |
BufferLength |
TargetValuePtr所指向缓冲区的长度。 |
StrLen_or_IndPtr |
输出参数:指向缓冲区的指针,在此缓冲区中返回长度或标识符的值。 |
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_NO_DATA:表示SQL语句不返回结果集。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
- SQL_STILL_EXECUTING:表示语句正在执行。
注意事项
当调用SQLFetch函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数分别设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLGetDiagRec
功能描述
返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。
原型
1 2 3 4 5 6 7 8 |
SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *SQLState, SQLINTEGER *NativeErrorPtr, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLengthPtr); |
参数
关键字 |
参数说明 |
---|---|
HandleType |
句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一:
|
Handle |
诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 |
RecNumber |
指出应用从查找信息的状态记录。状态记录从1开始编号。 |
SQLState |
输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 |
NativeErrorPtr |
输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 |
MessageText |
指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 |
BufferLength |
MessageText的长度。 |
TextLengthPtr |
输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它自己的执行结果:
- SQL_SUCCESS:函数成功返回诊断信息。
- SQL_SUCCESS_WITH_INFO:*MessageText太小以致不能容纳所请求的诊断信息。没有诊断记录生成。
- SQL_INVALID_HANDLE:由HandType和Handle所指出的句柄是不合法句柄。
- SQL_ERROR:RecNumber小于等于0或BufferLength小于0。
如果调用ODBC函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO,可调用SQLGetDiagRec返回诊断信息值SQLSTATE,SQLSTATE值的如下表。
SQLSATATE |
错误 |
描述 |
---|---|---|
HY000 |
一般错误 |
未定义特定的SQLSTATE所产生的一个错误。 |
HY001 |
内存分配错误 |
驱动程序不能分配所需要的内存来支持函数的执行或完成。 |
HY008 |
取消操作 |
调用SQLCancel取消执行语句后,依然在StatementHandle上调用函数。 |
HY010 |
函数系列错误 |
在为执行中的所有数据参数或列发送数据前就调用了执行函数。 |
HY013 |
内存管理错误 |
不能处理函数调用,可能由当前内存条件差引起。 |
HYT01 |
连接超时 |
数据源响应请求之前,连接超时。 |
IM001 |
驱动程序不支持此函数 |
调用了StatementHandle相关的驱动程序不支持的函数 |
示例
参见:示例
SQLSetConnectAttr
功能描述
设置控制连接各方面的属性。
原型
1 2 3 4 |
SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); |
参数
关键字 |
参数说明 |
---|---|
StatementtHandle |
连接句柄。 |
Attribute |
设置属性。 |
ValuePtr |
指向对应Attribute的值。依赖于Attribute的值,ValuePtr是32位无符号整型值或指向以空结束的字符串。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 |
StringLength |
如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当SQLSetConnectAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_DBC的HandleType和ConnectionHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLSetEnvAttr
功能描述
设置控制环境各方面的属性。
原型
1 2 3 4 |
SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); |
参数
关键字 |
参数说明 |
---|---|
EnvironmentHandle |
环境句柄。 |
Attribute |
需设置的环境属性,可为如下值:
|
ValuePtr |
指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位整型值,或为以空结束的字符串。 |
StringLength |
如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当SQLSetEnvAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_ENV的HandleType和EnvironmentHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例
SQLSetStmtAttr
功能描述
设置相关语句的属性。
原型
1 2 3 4 |
SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); |
参数
关键字 |
参数说明 |
---|---|
StatementtHandle |
语句句柄。 |
Attribute |
需设置的属性。 |
ValuePtr |
指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位无符号整型值,或指向以空结束的字符串,二进制缓冲区,或者驱动定义值。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 |
StringLength |
如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 |
返回值
- SQL_SUCCESS:表示调用正确。
- SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
- SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
- SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。
注意事项
当SQLSetStmtAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_STMT的HandleType和StatementHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
示例
参见:示例