crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QT+freeTDS+unixODBC+MSSQL2005
Гость_rusvid_*
сообщение 21.12.2009, 15:59
Сообщение #1





Гости








    


Я новичок в программировании под Linux и в QT в частности. Не получается заставить работать сабжевую связку.
Делал следующим образом:
1. Собрал unixODBC
Раскрывающийся текст
#cd unixODBC-2.2.14
#./configure --enable-gui=no
#make
#make install

2. Собрал freeTDS
Раскрывающийся текст
#cd freetds-0.82
#./configure --with-tdsver=8.0 --with-unixodbc=/usr/local
#make
#make install

3. Собрал qt-4.6.0
Раскрывающийся текст
./configure -I /usr/local/include/ -L /usr/local/lib/ -plugin-sql-odbc
#make
#make install

4. Сконфигурировал:
/usr/local/etc/freetds.conf
Раскрывающийся текст
[MSTEST]
host = test
port = 1433
tds version = 8.0
client charset = UTF-8

/usr/local/etc/odbcinst.ini
Раскрывающийся текст
[ODBC]
Trace = Yes
TraceFile = /tmp/sql.log
ForceTrace = Yes
Pooling = No

[TDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsS.so
Trace = Yes
TraceFile = /tmp/freetds.log
FileUsage = 1

/usr/local/etc/odbc.ini
Раскрывающийся текст
[gambit]
Description = FreeTDS
Driver = TDS
Servername = MSTEST
Database = gb1
Trace = Yes
TraceFile = /tmp/gambit.log
Port = 1433
TDS_Version = 8.0


Пытаюсь выполнить следующую хранимую процедуру:
ALTER procedure [dbo].[fp_test]
(
@Name varchar(50)
)
as
select 777


Код клиента:
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("gambit");
db.setUserName("login");
db.setPassword("password");
if (!db.open()) return 1;

QString strName = "QSql::In string";

QSqlQuery query;
query.prepare("{CALL fp_test(?)}");
query.bindValue("Name",strName);
if (!query.exec()) return 2;

Получаю:
Цитата
Запускается /home/alexey/work/TestODBC/TestODBC...
QODBCResult::exec: unable to bind variable: " [FreeTDS][SQL Server]Invalid data type"
/home/alexey/work/TestODBC/TestODBC завершился с кодом 2


cat /tmp/sql.log
Раскрывающийся текст
...
[ODBC][2139][1261399807.724945][SQLPrepare.c][192]
Entry:
Statement = 0x8d3a808
SQL = [{CALL fp_test(?)}][length = 17]
[ODBC][2139][1261399807.725091][SQLPrepare.c][367]
Exit:[SQL_SUCCESS]
[ODBC][2139][1261399807.725259][SQLBindParameter.c][213]
Entry:
Statement = 0x8d3a808
Param Number = 1
Param Type = 1
C Type = -8 SQL_C_WCHAR
SQL Type = -9 SQL_WVARCHAR
Col Def = 30
Scale = 0
Rgb Value = 0x8cf374a
Value Max = 30
StrLen Or Ind = 0xbfb1a474
[ODBC][2139][1261399807.725359][SQLBindParameter.c][393]
Exit:[SQL_ERROR]
DIAG [S1004] [FreeTDS][SQL Server]Invalid data type


...

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 11:56