Здравствуйте!
По не зависящим от меня причинам приходится кодить для работы с 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»));
Куда ещё можно копать? Заранее благодарен!