可以ODBC的SQLBindParameter的ColumnSize参数中的strlen(参数)+ 1 SQLCHAR类型参数? [英] Can ColumnSize argument of ODBC SQLBindParameter be strlen(param) + 1 for SQLCHAR type parameter?

查看:511
本文介绍了可以ODBC的SQLBindParameter的ColumnSize参数中的strlen(参数)+ 1 SQLCHAR类型参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

HTTP的SQLBindParameter函数的例子:/ /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;

...

 沤code =的SQLBindParameter(HSTMT,1,SQL_PARAM_INPUT,
                           SQL_C_CHAR,SQL_CHAR,EMPLOYEE_ID_LEN,
                           0,szEmployeeID,0,&放大器; cbEmployeeID);

我想知道,如果它是好的传递字符串参数加1的长度为ColumnSize参数。换句话说,我想知道,如果下面的调用是好的,如果我们假设 szEmployeeID 包含一个空结尾的字符串。

 沤code =的SQLBindParameter(HSTMT,1,SQL_PARAM_INPUT,
                           SQL_C_CHAR,SQL_CHAR,strlen的(szEmployeeID)+ 1,
                           0,szEmployeeID,0,&放大器; cbEmployeeID);

我相信这可能是在这样的调用非常有用的:

  SQLLEN NTS = SQL_NTS;
RET code =的SQLBindParameter(HSTMT,1,SQL_PARAM_INPUT,
                           SQL_C_CHAR,SQL_CHAR,6,
                           0,你好,0,&安培; NTS);字符*域=stackoverflow.com;
RET code =的SQLBindParameter(HSTMT,1,SQL_PARAM_INPUT,
                           SQL_C_CHAR,SQL_CHAR,strlen的(域)+ 1,
                           0,域,0,&安培; NTS);


解决方案

在这个问题的答案是是。

The example for SQLBindParameter function at http://msdn.microsoft.com/en-us/library/ms710963(v=vs.85).aspx passes the size of the character array as the ColumnSize argument (6th argument) when the C type is SQL_C_CHAR.

Quoting parts of the examples from that page:

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);

I want to know if it is okay to pass the length of the string parameter plus 1 as the ColumnSize argument. In other words, I want to know if the following call is okay if we assume that szEmployeeID contains a null-terminated string.

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

I believe this can be very useful in calls like these:

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);

解决方案

The answer to this question is "Yes".

这篇关于可以ODBC的SQLBindParameter的ColumnSize参数中的strlen(参数)+ 1 SQLCHAR类型参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆