c++ SQLBindParameter返回-1

dffbzjpn  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(141)

我的代码如下:

std::wstring ownerName = table->GetTableOwner();
SQLWCHAR *owner_name = new SQLWCHAR[ownerNameLen + 2];
int ownerNameLen = ownerName.length();
SQLLEN cbOwnerName = ownerNameLen == 0 ? SQL_NULL_DATA : SQL_NTS;
ret = SQLBindParameter( stmt_tableProp, 2, SQL_PARAM_INPUT, SQL_C_WCHAR, SQL_WCHAR, ownerNameLen, 0, owner_name, 0, &cbOwnerName );

当owner_name包含实际数据时,对SQLBindParameter的调用成功。但是,如果owner_name为"",则调用失败。我收到的错误消息是"HY104-无效的精度或小数位数值"。
根据MSDN,size的值应该是列的大小,而不是实参的大小。这是正确的吗?或者我应该传递0作为绑定值的长度?
此外,this page使用不同的值。
有人能给我点启示吗?

6rqinv9w

6rqinv9w1#

SqlBindParameter中传递ownerNameLen值的参数应包含列大小,而不是变量大小。根据文档,这是您使用的列数据类型(SQL_WCHAR)所要求的。下面是指向文档的链接。查找“ColumnSize参数”并亲自查看。
SqlBindParameter doc

相关问题