Russian Qt Forum

Qt => Базы данных => Тема начата: rusvid от Декабрь 09, 2009, 11:05



Название: Ubuntu9.10 Qt FreeTDS UnixODBC
Отправлено: rusvid от Декабрь 09, 2009, 11:05
Есть некоторая проблема с работай сабжа.
Вобщем, имеется на сервере MS SQL 2005 имеется хранимая процедура:

Код:
ALTER procedure [dbo].[fp_test]
(@value varchar(50) out
--@Number int out
)
as
select @Value = 'test string'
--select @Number = 777

Имеется такой код:

Код:
QSqlQuery query;
//query.setForwardOnly(true);
query.prepare("{CALL dbo.fp_test(?)}");
query.bindValue("Value", strValue,QSql::Out);
//query.bindValue("Number",n,QSql::Out);
if (!query.exec()) return 1;

strValue = query.boundValue("Value").toString();
//n = query.boundValue("Number").toInt();

Под WinXP данный код успешно отрабатывает — в strValue получаем "test string"
На Ubuntu query.exec() возвращает false, в окне вывода получаем
QODBCResult::exec: unable to bind variable: " [FreeTDS][SQL Server]Invalid data type".

Если работать с целочисленным параметром (раскомментировать/закомментировать соответствующие строки), то
и в WinXP и в Ubuntu код успешно выполняется.

Т.е. проблема со строковыми параметрами.
Возможно дело в кодировках ?
В /etc/freedts/freedts.conf указано client charset = UTF-8...


Название: Re: Ubuntu9.10 Qt FreeTDS UnixODBC
Отправлено: Tonal от Декабрь 24, 2009, 07:45
Посмотри какая версия FreeTDS и с какими ключами собран.
Я как-то ковырялся с ним, но довольно давно...