Linux Qt Sybase:函数序列错误

时间:2017-11-03 13:14:03

标签: c++ qt sybase freetds unixodbc

我们正在尝试移植一个在Ubuntu 14.04.5上运行的简单的Qt 4.8.5 C ++代码并成功使用UnixODBC 2.2.14和FreeTDS 0.91在MSSQL数据库上执行单个SELECT语句来执行相同的操作在Sybase数据库上。

我们目前收到的错误是[unixODBC][Driver Manager]Function sequence error

我们的配置如下所示:

/etc/odbc.ini

[myapp-odbc]
Database=variansystem
Description=MS SQL Server for MyApp connections
Driver=FreeTDS
ReadOnly=Yes
Servername=myapp-freetds
Trace=No

/etc/freetds/freetds.conf

[global]
client charset = UTF-8
tds version = 8.0

[myapp-freetds]
client charset = UTF-8
host = 192.168.0.5
port = 5000
tds version = 5.0

C ++伪代码

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "MyConn");
db.setUserName("user");
db.setPassword("pass");
db.setDatabaseName("myapp-odbc");

if (!db.open()) return;

QSqlQuery query(db);
query.prepare("SELECT table1.col1, table1.col2, table1.col3, table2.col4, table3.col5 " +
              "FROM table1 " +
              "JOIN table2 ON table1.col2 = table2.col4 " +
              "JOIN table3 ON table1.col3 = table3.col5 " +
              "WHERE table1.col1 > :limit1 " +
              "ORDER BY table1.col1;");

query.bindValue(":limit1", 123);

if (!query.exec())
{
    qDebug() << query.lastError().text(); // "[unixODBC][Driver Manager]Function sequence error"
    return;
}

不拥有Sybase或Ubuntu服务器,我们的调试选项仅限于我们可以添加到C ++代码中的内容。

0 个答案:

没有答案