Здравствуйте!
По не зависящим от меня причинам приходится кодить для работы с MS SQL Server'ом 2005. Ограничения FreeTDS известны (нет результатов из хранимых процедур и тэдэ), с ограничениями Qt4 повеселее --- узнаю только после наступления на грабли.
Вот ещё не сталкивался с проблемой. Операция INSERT, в bindValue передаю строку QString с русскими символами (без них всё работает как и надо). При выполнении запроса выдаётся следующая ошибка:
[FreeTDS][SQL Server]The incoming tabular data stream (TDS) protocol stream is incorrect. The stream ended unexpectedly. [FreeTDS][SQL Server]Error converting characters into server's character set. Some character(s) could not be converted.
Если подставлять в bindValue() не саму строку, а типа преобразованную к 8-битной кодировке методами типа toAscii(), toLatin1() (кароче, QByteArray передаётся в bindValue()), то выдаёт ошибку
[FreeTDS][SQL Server]Operand type clash: image is incompatible with varchar.
что вроде бы логично --- ведь bindValue подставляет не строку, а набор байтов, что он понимает как изображение.
Как с этим делом бороться?
Локаль UTF-8. В freetds.conf client charset = UTF-8. В программе на Qt4 запускается QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
Куда ещё можно копать? Заранее благодарен!
PS: система OpenSuSE 11.2, Qt 4.5.2 с драйвером obdc, скомпилированным с ODBC 2 (по рекомендации Trolltech из-за проблем в FreeTDS с UTF-8). unixODBC 2.2.12, freetds 0.82