如何确定SQLBindCol的正确缓冲区大小
如何确定SQLBindCol的正确缓冲区大小,c,odbc,buffer,unixodbc,C,Odbc,Buffer,Unixodbc,SQLBindCol函数需要缓冲区长度(对于某些缓冲区类型,如字符串): 我如何知道应该分配多少字节 我能想到的唯一一件事是使用SQLGetDescField获取SQL\u DESC\u LENGTH,但是我必须执行两次查询。由于我混淆了函数的运行顺序,正确的顺序是: SQLBindParameter SQLExecDirect SQLBindCol 对于SQLBindParameter(至少对于输入参数),在执行语句之前,长度是已知的 在SQLExecDirect之后,可以使用SQLNumR
SQLBindCol
函数需要缓冲区长度(对于某些缓冲区类型,如字符串):
我如何知道应该分配多少字节
我能想到的唯一一件事是使用
SQLGetDescField
获取SQL\u DESC\u LENGTH
,但是我必须执行两次查询。由于我混淆了函数的运行顺序,正确的顺序是:
SQLBindParameter
SQLExecDirect
SQLBindCol
SQLBindParameter
(至少对于输入参数),在执行语句之前,长度是已知的
在SQLExecDirect
之后,可以使用SQLNumResultCols
和SQLGetDescField
函数来确定列的数量、它们的数据类型、长度等
SQL92/CLI(调用级别接口)文档在附录
B.2 Interactive Query
中有一个示例,它使用SQLDescribeCol
获取长度。在绑定之前调用SQLDescribeCol
SQLRETURN SQLBindCol(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValuePtr,
SQLLEN BufferLength,
SQLLEN * StrLen_or_Ind);