当{C}为SQL_C_CHAR
时,http://msdn.microsoft.com/en-us/library/ms710963(v=vs.85).aspx处的SQLBindParameter函数的示例将字符数组的大小作为ColumnSize参数(第6个参数)传递。
从该页面引用部分示例:
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);
我想知道是否可以将string参数的长度加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);
答案 0 :(得分:1)
这个问题的答案是“是”。