C++ SQL Server ODBC字符串数据,日期时间和二进制插入的右截断

C++ SQL Server ODBC字符串数据,日期时间和二进制插入的右截断,c++,sql-server,odbc,C++,Sql Server,Odbc,BufLenI使用ODBC将数据插入SQL server 2012(Express)数据库我收到一条截断消息: 读完这篇文章: 我已选中,但未启用区域设置 使用查询插入日期时间时: 在订单中插入(更新的)值('02-06-2014T10:41:49') 一切都很好 当我尝试像这样绑定字符串时: 或 我收到了无情的ODBC错误消息: [Microsoft][ODBC SQL Server驱动程序]字符串数据,右截断 我看过铸件,但我不确定这是否是问题所在 我被难住了 我在这里仔细研究了API

BufLenI使用ODBC将数据插入SQL server 2012(Express)数据库我收到一条截断消息:

读完这篇文章:

我已选中,但未启用区域设置

使用查询插入日期时间时:

在订单中插入(更新的)值('02-06-2014T10:41:49') 一切都很好

当我尝试像这样绑定字符串时:

我收到了无情的ODBC错误消息:

[Microsoft][ODBC SQL Server驱动程序]字符串数据,右截断

我看过铸件,但我不确定这是否是问题所在

我被难住了

我在这里仔细研究了API调用:

如果只绑定固定长度的整数数据类型,则可以使用代码插入

在这里检查:

似乎转换是隐式的,所以我不明白为什么会出现截断错误

我对二进制日期写入VarBinary(MAX)列也有同样的问题

我使用ODBC驱动程序14,我相信和DSN或连接字符串,我得到了相同的问题

CREATE TABLE MyFrustratingTable
(
    PK INT NOT NULL IDENTITY,
    UpdatedDT datetime,
    UpdatedU INT,
    DataBlob varbinary(MAX),
)
增加:


BufLen是一个INT,它包含pBuf指向的二进制数据的长度。Colsz包含相同的数字,但我已经在任何和所有组合中尝试了较大和较小的数字。

您可能希望显示BufLen中的内容,或者它可能是1,因此毫无意义。您仍然没有向我们显示我们需要的信息。在您的第一个SQLBindParameter调用中,ColSz中的数字和*pBufLen中的数字是什么。还有,为什么最后的第二个参数是0-它不应该是。深夜长白天错误。纠正
iRetVal = SQLBindParameter( hStmt, Col, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_C_BINARY, ColSz, 0, pBuf, BufLen, pBufLen ) 
CREATE TABLE MyFrustratingTable
(
    PK INT NOT NULL IDENTITY,
    UpdatedDT datetime,
    UpdatedU INT,
    DataBlob varbinary(MAX),
)