Может ли аргумент ColumnSize ODBC SQLBindParameter быть strlen (param) + 1 для параметра типа SQLCHAR? - PullRequest
2 голосов
/ 12 апреля 2011

Пример для функции 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);

1 Ответ

1 голос
/ 10 октября 2011

Ответ на этот вопрос «Да».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...