对于SQLCHAR类型参数,ODBC SQLBindParameter的ColumnSize参数可以是strlen(param)+ 1吗?

SQLBindParameter函数的示例位于http://msdn.microsoft.com/en-us/library/ms710963(v=vs.85).aspx时 ,将字符数组的大小作为ColumnSize参数(第6个参数)传递给C时type是SQL_C_CHAR

从该页面引用部分示例:

 SQLCHAR szEmployeeID[EMPLOYEE_ID_LEN]; SQL_DATE_STRUCT dsOrderDate; SQLINTEGER cbCustID = 0, cbOrderDate = 0, cbEmployeeID = SQL_NTS; 

 retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, EMPLOYEE_ID_LEN, 0, szEmployeeID, 0, &cbEmployeeID); 

我想知道是否可以将字符串参数的长度加1作为ColumnSize参数。 换句话说,如果我们假设szEmployeeID包含以null结尾的字符串,我想知道以下调用是否正常。

 retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(szEmployeeID) + 1, 0, szEmployeeID, 0, &cbEmployeeID); 

我相信这对于这样的调用非常有用:

 SQLLEN nts = SQL_NTS; retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 6, 0, "hello", 0, &nts); char *domain = "stackoverflow.com"; retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(domain) + 1, 0, domain, 0, &nts); 

这个问题的答案是“是”。