odbc SQLFetch读到NULL

参考:https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlbindcol-function?view=sql-server-ver15

odbc中SQLFetch读到NULL则不会改变那一列对应的缓冲区,而是将对应列的 长度/标志也就是StrLen_or_Ind变量设置为SQL_NULL_DATA

例如:

SQLLEN enameLen;
SQLVARCHAR ename[45];
//绑定数据
SQLBindCol(serverhstmt,1, SQL_C_CHAR, (void*)ename,sizeof(ename), &enameLen);
SQLFetch(serverhstmt);

其中SQLBindCol的最后一个参数就是StrLen_or_Ind,也就是长度/标志
如果读到的是正常值,则enameLen会被赋值为读到的字符的个数。
如果读到NULL,那么ename里的内容不会被改变,但是enameLen会被设置为SQL_NULL_DATA。所以可以这样检测读到的是否是NULL:

if (SQL_NULL_DATA == enameLen)
posted @ 2024-09-28 13:44  寻找繁星  阅读(3)  评论(0编辑  收藏  举报