linux qt QODBC连接sql server 驱动 问题 ,实在是没辙了

每件事 2013-09-10 11:18:15
程序在linux下,现在需要连接windows的sqlserver .
   db = QSqlDatabase::database(SqlExpressway);
if ( db.isValid() == false )
{
db = QSqlDatabase::addDatabase("QODBC", SqlExpressway);

QString dsn = QString("DRIVER={SQL SERVER};SERVER=%1;port=%2;DATABASE=%3;uid=%4;pwd=%5;")
.arg("192.168.1.214")
.arg(1344)
.arg("expressway")
.arg("sa")
.arg("");

db.setDatabaseName(dsn);
db.setHostName("192.168.1.214");
db.setPort(1344);
db.setUserName("sa");
db.setPassword("");
if ( db.open() == false )
{
db.removeDatabase(SqlExpressway);
qDebug()<<"error:"<<db.lastError().text();
}
}


报Drive Not Loaded 错误。
于是,我就下载了unixODBC-2.3.1.tar.gz
./configure make make install
接着装了 apt-get install libqt4-sql-odbc

将libqsqlodbc.so 拷贝到qt用的sqldrivers 里。

    qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;



Available drivers:
"QMYSQL3"
"QMYSQL"
"QSQLITE"
"QODBC3"
"QODBC"
程序显示,QODBC 已经可以使用了。但是 db.open() 时,却失败了。
报错信息
error:"Driver not loaded Driver not loaded"


...全文
610 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qt新手 2015-01-29
  • 打赏
  • 举报
回复
请问楼主最终是怎么解决的呢?可以说一下流程吗?
RY 2014-08-14
  • 打赏
  • 举报
回复
引用 3 楼 hxyzby 的回复:
[quote=引用 1 楼 lijielinjun 的回复:] 光unixODBC还不行,要用unixODBC + freetds, freetds才是数据库的驱动。
现在可以打开了,执行数据库操作时,insert没问题。select 却报下面错误

执行语句:select * from audit;  数据库:123 错误代码[FreeTDS][SQL Server]Read from the server failed QODBC3: Unable t
[/quote]我也遇到了你一样的问题,已经用QODBC连上了SQL Server,可以insert ,但是不能select 。请问你是怎么解决的呢?
nicklgw 2014-01-09
  • 打赏
  • 举报
回复
博主,能不能 写个博客.或留个联系方式.交流交流 我也遇到了类似问题,请赐教 烦躁!!!
每件事 2013-10-21
  • 打赏
  • 举报
回复
引用 10 楼 foxyz 的回复:
中文乱码的关键是你怎么使用编码。 1、一般来说源码中能不用汉字字符串常量就不用。 2、源码本身的编码规则影响到汉字常量字符串的编码。 3、当你无法确定当前的汉字编码是什么时,用QByteArray::toHex来看看实际编码是什么。 4、Qt5及以上版本没有QTextCodec了。
谁也不想用,但是涉及到工号表之类,总不能让客户起英文名吧。 QT 4.8 版本 源码 UTF-8 QTextCodec 也是UTF-8 str = tr("select * from CFGUSER where username ='陈雪婷'"); qDebug()<<"hex"<<str.toAscii().toH hex "73656c656374202a2066726f6d204346475553455220776865726520757365726e616d65203d27e99988e99baae5a9b727"
donwmufromdying 2013-10-21
  • 打赏
  • 举报
回复
中文乱码的关键是你怎么使用编码。 1、一般来说源码中能不用汉字字符串常量就不用。 2、源码本身的编码规则影响到汉字常量字符串的编码。 3、当你无法确定当前的汉字编码是什么时,用QByteArray::toHex来看看实际编码是什么。 4、Qt5及以上版本没有QTextCodec了。
每件事 2013-10-19
  • 打赏
  • 举报
回复
引用 6 楼 foxyz 的回复:
这个等我有时间了,做一个实验吧!。
请问中文乱码问题,你知道方法吗
每件事 2013-10-18
  • 打赏
  • 举报
回复
引用 6 楼 foxyz 的回复:
这个等我有时间了,做一个实验吧!。
我也在头疼中文乱码问题 。QQ 450538334 注明:QODBC
天涯看雪 2013-10-16
  • 打赏
  • 举报
回复
连接问题我解决了 现在 头疼 中文乱码问题 版主可以加qq 一起讨论吗?
donwmufromdying 2013-10-13
  • 打赏
  • 举报
回复
这个等我有时间了,做一个实验吧!。
天涯看雪 2013-10-11
  • 打赏
  • 举报
回复
版主,最后解决了么?能否把你的连接记录一份 或发表一个博客
每件事 2013-09-10
  • 打赏
  • 举报
回复
to execute statement
每件事 2013-09-10
  • 打赏
  • 举报
回复
引用 1 楼 lijielinjun 的回复:
光unixODBC还不行,要用unixODBC + freetds, freetds才是数据库的驱动。
现在可以打开了,执行数据库操作时,insert没问题。select 却报下面错误

执行语句:select * from audit;  数据库:123 错误代码[FreeTDS][SQL Server]Read from the server failed QODBC3: Unable t
每件事 2013-09-10
  • 打赏
  • 举报
回复
引用 1 楼 lijielinjun 的回复:
光unixODBC还不行,要用unixODBC + freetds, freetds才是数据库的驱动。
我这是在QT 里使用的。我同事,他就是只 apt-get install unixODBC-dev 和 apt-get install libqt4-sql-odbc 然后程序就可以正常连接sql-server 了。
浮云一梦 2013-09-10
  • 打赏
  • 举报
回复
光unixODBC还不行,要用unixODBC + freetds, freetds才是数据库的驱动。

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧