更新日期:2024年09月11日
应用程序在输入缓冲区中将数据传给驱动程序。驱动程序在输出缓冲区中将数据返回给应
用程序。
应用程序必须同时为输入和输出缓冲区分配内存。如果应用程序使用缓冲区来检索字符串
数据,则该缓冲区必须包含空终止字节的空间。
有些函数接受指向缓冲区的指针,稍后由其他函数来使用。应用程序必须确保这些指针保
持有效,直到所有适用的函数都已使用了它们。例如,SQLBindCol中的参数 rgbValue 指
向 SQLFetch 返回列的数据的输出缓冲区。
输入缓冲区
应用程序将输入缓冲区的地址和长度传给驱动程序。
缓冲区的长度必须为下列值之一:
大于或等于零的长度
此值为输入缓冲区中数据的实际长度。对于字符数据,长度零指示该数据为空字符串
(零长度)。零长度不同于空指针。如果应用程序指定字符数据的长度,则字符数据
不需要以空字符结尾。
SQL_NTS
此值指定字符串数据值为空终止的。
SQL_NULL_DATA
此值告诉驱动程序忽略输入缓冲区中的值,
并替代使用 NULL 数据值。
仅当输入缓冲
区提供 SQL 语句中参数的值时,它才是有效的。
对于包含嵌入的空字符的字符数据,
GBase 8s ODBC Driver函数的操作是未定义的;
出于最
大可操作性的考虑,最好不要使用它们。GBase 8s 数据库服务器将空字符处理为字符串结
束标志,或作为不再存在数据的指示符。
除非在函数描述中禁止它,否则,输入缓冲区的地址可为空指针。在此情况下,对应的缓
冲区长度参数的值将被忽略。
输出缓冲区
应用程序将参数传给驱动程序,以便于驱动程序可在输出缓冲区中返回数据。
这些参数为:
输出缓冲区的地址,驱动程序将数据返回这里
除非在函数描述中禁止它,否则,输出缓冲区的地址可为空指针。在此情况下,驱动
程序不在缓冲区中返回任何内容,在没有错误时,返回 SQL_SUCCESS。
GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 15 -
如有必要,在返回它之前,驱动程序转换数据。在返回它之前,驱动程序始终空终止
字符数据。
缓冲区的长度
如果返回的数据有固定的 C 长度,
比如整数、
实数或日期结构,
则驱动程序忽略此值。
驱动程序返回数据长度的变量地址(长度缓冲区)
如果在结果集中数据为空值,则返回的数据长度为 SQL_NULL_DATA。否则,返回的数
据长度为可用于返回的数据的字节数。如果驱动程序转换该数据,则返回的数据长度
为转换之后保留的字节数;对于字符数据,它不包括驱动程序添加的空终止字节。
如果输出缓冲区太小,则驱动程序尝试截断数据。如果截断未导致有效数据的丢失,则驱
动程序在输出缓冲区中返回截断的数据,在长度缓冲区中返回可用数据的长度(与截断的
数据的长度相反)
,
并返回 SQL_SUCCESS_WITH_INFO。
如果截断导致有效数据的丢失,
则驱动程序保持输出和长度缓冲区不变,并返回 SQL_ERROR。应用程序调用
SQLGetDiagRec 来检索关于截断或错误的信息。