SQL列在第一个字符后截断Varchar值

时间:2012-07-24 22:28:53

标签: c++ sql unicode odbc

我正在尝试插入一个列,我只看到我插入的字符串的第一个字符。我一直在抨击这个问题一段时间。

在我的程序中定义了Unicode。我正在使用ODBC和Sybase SQLAnywhere。该程序运行时没有编译器错误,我试图插入的列采用varchar。我在Windows Server 2003上使用来自odbc32.lib的SQLBindParameter(警告::遗留代码传入)。

验证只是我定义的断言。 EFields是一个std :: map,其中TSTRING被定义为

typedef std::basic_string<TCHAR> TSTRING;

这是我的ODBC代码。

bufSize = sizeof(TCHAR) * (EFields.find(_T("clientipaddress"))->second.length()); //not null terminated
VERIFY(::SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_VARCHAR, EFields.find(_T("clientipaddress"))->second.length() , 0 , 
        (SQLPOINTER)EFields.find(_T("clientipaddress"))->second.c_str(), bufSize, NULL) == SQL_SUCCESS);

传入的字符串是IP(这个以10.1开头)。我被要求使用varchar,以便在IPV6变得更常用时代码不会中断。先谢谢你。

1 个答案:

答案 0 :(得分:0)

数据库中从Varchar更改为Nvarchar解决了我的问题。