Пример для функции SQLBindParameter в http://msdn.microsoft.com/en-us/library/ms710963(v=vs.85).aspx передает размер массива символов в качестве аргумента ColumnSize (шестой аргумент), когда тип C равен 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
содержит строку с нулевым символом в конце.
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);