我试图插入一列,我只看到我插入的字符串的第一个字符。一段时间以来,我一直在努力解决这个问题。
在我的程序中定义了 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 变得更普遍使用时代码不会中断。提前谢谢你。