列に挿入しようとしていますが、挿入している文字列の最初の文字しか表示されません。私はしばらくの間、この問題に頭を悩ませてきました。
私のプログラムでは Unicode が定義されています。ODBC と Sybase SQLAnywhere を使用しています。プログラムはコンパイラ エラーなしで実行され、挿入しようとしている列は varchar を取ります。Windows Server 2003 で odbc32.lib の SQLBindParameter を使用しています (警告:: レガシー コードが着信しています)。
Verify は、私が定義したアサートです。EFields は、TSTRING が次のように定義されている std::map です。
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 から始まります)。IPV6 がより一般的に使用されるようになったときにコードが壊れないように、varchar を使用するように依頼されました。よろしくお願いします。