SQL Server ODBC字符串数据,DateTime和二进制插入的右截断

时间:2014-02-06 09:06:44

标签: c++ sql-server odbc

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

看完之后:

"String data, right truncation" warning on a select statement

我已检查并且未启用区域设置

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

INSERT INTO订单(UpdatedDT)VALUES('02 -06-2014T10:41:49') 一切都很好。

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

C++ SQLBindParameter

iRetVal = SQLBindParameter( hStmt, Col, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_C_CHAR, ColSz, 0, pBuf, BufLen, pBufLen) ) 

iRetVal = SQLBindParameter( hStmt, Col, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_C_BINARY, ColSz, 0, pBuf, BufLen, pBufLen ) 

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

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

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

http://msdn.microsoft.com/en-us/library/ms187928.aspx

我很难过。

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

http://msdn.microsoft.com/en-us/library/ms710963%28v=vs.85%29.aspx

如果我只绑定固定长度的整数数据类型

,我可以插入我的代码

点击此处:

http://msdn.microsoft.com/en-us/library/ms187928.aspx

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

我在将二进制日期写入VarBinary(MAX)列时遇到了同样的问题。

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

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

增加:

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

0 个答案:

没有答案