Qt连接数据库问题。

咿呀咿呀呦__ 2012-10-31 01:56:48
我用
QSqlQuery query;
QString s = "select * from " + str1 + " where sname = " + str2;
query.exec(s);

最后却显示:
QSqlQuery::exec: database not open

后来我改成
QString s = "select * from " + str1 + " where sname = " + str2;
QSqlQuery query(s,db);
query.exec(s);

显示:
QODBCResult::exec: Unable to execute statement: "[Microsoft][ODBC 驱动程序管理器] 函数序列错误"

求请教
...全文
1187 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
QSqlQuery query(dbGatherInfo); query.prepare("select roadinfo.RoadID,roadinfo.roadorder,gatherinfo.cameraId,gatherinfo.gatherTime," "gatherinfo.speed,gatherinfo.flow,gatherinfo.density,gatherinfo.carcount,gatherinfo.LoginUser," "gatherinfo.ModifyUser,gatherinfo.loginDateTime,gatherinfo.modifyDateTime,gatherinfo.Deleteflag " "from roadinfo,gatherinfo where roadinfo.cameraId = gatherinfo.cameraId and " "roadinfo.Classify = :Classify " "and gatherinfo.gatherTime between :gatherTimeStart and :gatherTimeEnd " " order by roadinfo.roadorder,gatherinfo.gatherTime DESC" ); query.bindValue(":gatherTimeStart",dtmeGatherTimeStart); query.bindValue(":gatherTimeEnd",dtmeGatherTimeEnd); query.bindValue(":Classify",ROAD_CLASSIFY_GATHER); if(query.exec()) { return query; } 这段代码在MySql数据库中能查出数据,到SQL sever 2005中查不出数据? 数据都是从一个execl表中的数据
__阿飞__ 2012-11-01
  • 打赏
  • 举报
回复
你可以把你的变量s打出来,然后把打出来的东西放到数据库里面查一下,如果没有错那就没错,如果有错改下就行了.比如有些字段是字符串,那就单引号引起来就好了,比如这样:

"select * from usr where name='xxx'"
咿呀咿呀呦__ 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

你可以把你的变量s打出来,然后把打出来的东西放到数据库里面查一下,如果没有错那就没错,如果有错改下就行了.比如有些字段是字符串,那就单引号引起来就好了,比如这样:
SQL code

"select * from usr where name='xxx'"
[/Quote]

谢谢各位,问题解决了。就是SQL语句的语法问题,注意观察Qt中SQL不同语句引号的位置。
咿呀咿呀呦__ 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

从错误来说,不是没打开的问题。从代码来看,SQL语法就是错的。从仅有的代码来看,我就看出来了SQL语法的错误。记住,SQL语法中字符串值要用引号的
[/Quote]
你好,我db.open了 而且返回成功,语法的问题的话,你的意思是
得在 where sname = 处加双引号,和select隔开?
__阿飞__ 2012-10-31
  • 打赏
  • 举报
回复
向上推一步是没打开数据库,再向上推一步是数据库连接设置出问题,数据没连接上.

代码贴完整点.
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C/C++ code

QString s = QString("select * from %1 where sname='%2'").arg(str1).arg(str2);
QSqlQuery query(db);
query.exec(s);
[/Quote]

up
  • 打赏
  • 举报
回复
估计是没打开数据库
我是学友 2012-10-31
  • 打赏
  • 举报
回复
你open没?代码贴完整点
donwmufromdying 2012-10-31
  • 打赏
  • 举报
回复

QString s = QString("select * from %1 where sname='%2'").arg(str1).arg(str2);
QSqlQuery query(db);
query.exec(s);
donwmufromdying 2012-10-31
  • 打赏
  • 举报
回复
从错误来说,不是没打开的问题。从代码来看,SQL语法就是错的。从仅有的代码来看,我就看出来了SQL语法的错误。记住,SQL语法中字符串值要用引号的
范俊武 2012-10-31
  • 打赏
  • 举报
回复
db.open

16,824

社区成员

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

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