我正在尝试插入一个列,我只看到我插入的字符串的第一个字符。我一直在抨击这个问题一段时间。
在我的程序中定义了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变得更常用时代码不会中断。先谢谢你。
答案 0 :(得分:0)
数据库中从Varchar更改为Nvarchar解决了我的问题。